标签:redis
REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统
127.0.0.1:6379> set mykey somevalue OK 127.0.0.1:6379> get mykey "somevalue" 127.0.0.1:6379>
127.0.0.1:6379> set mykey newval nx (nil) 127.0.0.1:6379> get mykey "somevalue" 127.0.0.1:6379> 127.0.0.1:6379> set mykey newval xx OK 127.0.0.1:6379> get mykey "newval"
127.0.0.1:6379> set counter 100 OK 127.0.0.1:6379> incr counter (integer) 101 127.0.0.1:6379> incr counter (integer) 102 127.0.0.1:6379> incrby counter 50 (integer) 152
INCR命令让the value 成为一个整数,运行一次INCR便+1。INCRBY命令便是一个加法运算。类似的命令如减法运算为: DECR and DECRBY。
Redis可以运用MSET and MGET 命令完成一次性的完成多个key-value的对应关系,使用MGET命令,Redis返回一个value数组
127.0.0.1:6379> mset a 10 b 20 c 30 OK 127.0.0.1:6379> mget a b c 1) "10" 2) "20" 3) "30" 127.0.0.1:6379>
Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素导列表的头部(左边)或者尾部(右边) LPUSH 命令插入一个新的元素导头部, 而 RPUSH插入一个新元素导尾部.当一个这两个操作在一个空的Key上被执行的时候一个新的列表被创建。相似的,如果一个列表操作清空一个列表那么对应的key将被从key空间删除。这是非常方便的语义,因为他们被调用使用一个空列表完全就像他们被调用时使用一个不存在的键值(可以)做为参数。
PUSH一类的命令的返回值为list的长度。一些类表操作和结果的例子:
127.0.0.1:6379> rpush mylist A (integer) 1 127.0.0.1:6379> rpush mylist B (integer) 2 127.0.0.1:6379> lpush mylist first (integer) 3 127.0.0.1:6379> lrange mylist 0 -1 1) "first" 2) "A" 3) "B" 127.0.0.1:6379>
注意:LRANGE 利用了两个检索值,0表示list的开头第一个,-1表示list的倒数第一个,即最后一个。-2则便是list的倒数第二个,以此类推。
这些命令都是可变的命令,也就是说你可以一次加入多个元素放入list。
127.0.0.1:6379> RPUSH mylist 1 2 3 4 5 "hello" (integer) 9 127.0.0.1:6379> lrange mylist 0 -1 1) "first" 2) "A" 3) "B" 4) "1" 5) "2" 6) "3" 7) "4" 8) "5" 9) "hello" 127.0.0.1:6379>
127.0.0.1:6379> rpush mylist a b c (integer) 3 127.0.0.1:6379> LRANGE mylist 0 -1 1) "a" 2) "b" 3) "c" 127.0.0.1:6379> rpop mylist "c" 127.0.0.1:6379> LRANGE mylist 0 -1 1) "a" 2) "b" 127.0.0.1:6379> lpop mylist "a" 127.0.0.1:6379> LRANGE mylist 0 -1 1) "b" 127.0.0.1:6379>
127.0.0.1:6379> hmset user:1000 username liubo age 20 money 100 //创建记录,相等于数据库表一条记录 OK 127.0.0.1:6379> hget user:1000 username//获取值,记录的字段名对应的值 "liubo" 127.0.0.1:6379> hget user:1000 money "100"
127.0.0.1:6379> hmget user:1000 username age money 1) "liubo" 2) "20" 3) "100" 127.0.0.1:6379> hgetall user:1000 1) "username" 2) "liubo" 3) "age" 4) "20" 5) "money" 6) "100" 127.0.0.1:6379>
无序集合
Redis 集合(Set)是一个无序的字符串集合. 你可以以O(1)的时间复杂度 (无论集合中有多少元素时间复杂度都是常量)完成添加,删除,以及测试元素是否存在。 Redis 集合拥有令人满意的不允许包含相同成员的属性。多次添加相同的元素,最终在集合里只会有一个元素。 实际上说这些就是意味着在添加元素的时候无须检测元素是否存在。 一个Redis集合的非常有趣的事情是他支持一些服务端的命令从现有的集合出发去进行集合运算,因此你可以在非常短的时间内进行合并(unions), 求交集(intersections),找出不同的元素(differences of sets)。
127.0.0.1:6379> sadd myset 1 2 3 (integer) 3 127.0.0.1:6379> SMEMBERS myset 1) "1" 2) "2" 3) "3" 127.0.0.1:6379>
SISMEMBER用于查看集合是否存在,匹配项包括集合名和元素个数。匹配成功返回1,匹配失败返回0.
127.0.0.1:6379> SISMEMBER myset 3 (integer) 1 127.0.0.1:6379> SISMEMBER myset 30 (integer) 0
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
有序集合
Redis有序集合与普通集合非常相似,是一个没有重复元素的字符串集合。不同之处是有序集合的没有成员都关联了一个评分,这个评分被用来按照从最低分到最高分的方式排序集合中的成员。集合的成员是唯一的,但是评分可以是重复了。 使用有序集合你可以以非常快的速度(O(log(N)))添加,删除和更新元素。因为元素是有序的, 所以你也可以很快的根据评分(score)或者次序(position)来获取一个范围的元素。访问有序集合的中间元素也是非常快的,因此你能够使用有序集合作为一个没有重复成员的智能列表。在有序集合中,你可以很快捷的访问一切你需要的东西:有序的元素,快速的存在性测试,快速访问集合的中间元素! 简而言之使用有序集合你可以做完成许多对性能有极端要求的任务,而那些任务使用其他类型的数据库真的是很难完成的。
ZADD与SADD类似,但是在元素之前多了一个参数,这个参数便是用于排序的。形成一个有序的集合。
查看集合ZRANGE是查看正序的集合,ZREVRANGE是查看反序的集合。0表示集合第一个元素,-1表示集合的倒数第一个元素。
127.0.0.1:6379> zadd myzset 20 liubo (integer) 1 127.0.0.1:6379> zadd myzset 22 hello (integer) 1 127.0.0.1:6379> zadd myzset 20 nice (integer) 1 127.0.0.1:6379> zadd myzset 0.1 welcome (integer) 1 127.0.0.1:6379> ZRANGE myzset 0 -1 1) "welcome" 2) "liubo" 3) "nice" 4) "hello" 127.0.0.1:6379> ZREVRANGE myzset 0 -1 1) "hello" 2) "nice" 3) "liubo" 4) "welcome" 127.0.0.1:6379>
127.0.0.1:6379> ZREVRANGE myzset 0 2 withscores //返回分数最高的前三名, 显示分数参数 1) "hello" 2) "22" 3) "nice" 4) "20" 5) "liubo" 6) "20" 127.0.0.1:6379>
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:redis
原文地址:http://blog.csdn.net/liubo682115/article/details/47070351