启动
启动服务端
./redis-server
指定要加载的配置文件
./redis-server ../redis.conf
默认情况下,redis-server会以非daemon的方式来运行,且默认服务端口为6379。
启动客户端
./redis-cli
//用set指令来设置key、value
127.0.0.1:6379> set name "roc" OK
//来获取name的值
127.0.0.1:6379> get name "roc"
//通过客户端来关闭redis服务端
127.0.0.1:6379> shutdown
127.0.0.1:6379>
数据结构
redis是一种高级的key:value存储系统,其中value支持五种数据类型:
1.字符串(strings)
2.字符串列表(lists)
3.字符串集合(sets)
4.有序字符串集合(sorted sets)
5.哈希(hashes)
而关于key,一下几点需要注意:
1.key不要太长,尽量不要超过1024字节,这不仅消耗内存,而且会降低查找的效率;
2.key也不要太短,太短的话,key的可读性会降低;
3.在一个项目中,key最好使用统一的命名模式,例如user:10000:passwd。
字符串
strings类型是一个很基础的数据类型
set mystr "hello world!" //设置字符串类型
get mystr //读取字符串类型
字符串可以进行数值操作
incr_num.png在遇到数值操作时,redis会将字符串类型转换成数值。由于INCR等指令本身就具有原子操作的特性,所以我们完全可以利用redis的INCR、INCRBY、DECR、DECRBY等指令来实现原子计数的效果
list
redis中的lists在底层实现上并不是数组,而是链表。对于一个具有上百万个元素的lists来说,在头部和尾部插入一个新元素,其时间复杂度是常数级别的,比如用LPUSH在10个元素的lists头部插入新元素,和在上千万元素的lists头部插入新元素的速度应该是相同的。链表型lists的元素定位会比较慢,而数组型lists的元素定位就会快得多。
lists的常用操作包括LPUSH、RPUSH、LRANGE等。我们可以用LPUSH在lists的左侧插入一个新元素,用RPUSH在lists的右侧插入一个新元素,用LRANGE命令从lists中指定一个范围来提取元素。
127.0.0.1:6379> lpush tlist "1"
(integer) 1
127.0.0.1:6379> rpush tlist "2"
(integer) 2
127.0.0.1:6379> lpush tlist "0"
(integer) 3
127.0.0.1:6379> lrange tlist 0 1
1) "0"
2) "1"
127.0.0.1:6379> lrange tlist 0 -1
1) "0"
2) "1"
3) "2"
127.0.0.1:6379>
lists的应用相实例:
1.我们可以利用lists来实现一个消息队列,而且可以确保先后顺序,不必像MySQL那样还需要通过ORDER BY来进行排序。
2.利用LRANGE还可以很方便的实现分页的功能。
3.在博客系统中,每片博文的评论也可以存入一个单独的list中。
set
redis的集合,是一种无序的集合。集合相关的操作也很丰富,如添加新元素、删除已有元素、取交集、取并集、取差集等
127.0.0.1:6379> sadd tset "one"
(integer) 1
127.0.0.1:6379> sadd tset "two"
(integer) 1
127.0.0.1:6379> smembers tset
1) "one"
2) "two"
127.0.0.1:6379> sismember tset "one"
(integer) 1
127.0.0.1:6379> sismember tset "one1"
(integer) 0
127.0.0.1:6379>
sunion tset tset //求并集
zset
有序集合(sorted sets)。有序集合中的每个元素都关联一个序号(score),这便是排序的依据。我们都将redis中的有序集合叫做zsets,这是因为在redis中,有序集合相关的操作指令都是以z开头的,比如zrange、zadd、zrevrange、zrangebyscore等等
127.0.0.1:6379> zadd tzset 1 "baidu"
(integer) 1
127.0.0.1:6379> zadd tzset 3 "360"
(integer) 1
127.0.0.1:6379> zrange tzset 0 -1
1) "baidu"
2) "360"
127.0.0.1:6379> zrange tzset 0 -1 withscores
1) "baidu"
2) "1"
3) "360"
4) "3"
127.0.0.1:6379>
hash
用于处理对象数据
127.0.0.1:6379> hmset user:001 username huben password 123456
OK
127.0.0.1:6379> hgetall user:001
1) "username"
2) "huben"
3) "password"
4) "123456"
127.0.0.1:6379> hset user:001 password 12345678
(integer) 0
127.0.0.1:6379> hgetall user:001
1) "username"
2) "huben"
3) "password"
4) "12345678"
127.0.0.1:6379>
网友评论