Redis基本数据结构总结之SET、ZSET和HASH
Redis基本数据结构总结
前言
五种数据结构
- 字符串:包括字符串、整数和浮点数;
- 列表:一个链表,链表上面的每个结点都是一个字符串,其遵从队列的访问格式-先进先出,也就是从链表的结尾进行插入,链表的头部进行弹出;
- 集合:里面是一个容器,他不允许存在相同的元素,每个值都是独一无二的;
- 哈希:是一个键值对组合而成的无序散列表,其的键同样是不允许重复的;
- 有序集合:是在集合的基础之上进行了排序;
Key
获取key剩余的存活时间,单位为秒,和上面的命令相对应,当 key 不存在时,返回 -2 。 当 key 存在但没有设置剩余生存时间时,返回 -1 。
将key更改为新的key,注意如果newkey在数据库中已经存在,那么旧的key的数据会把已经存在的新的key给覆盖掉。如果旧名不存在,则提示ERR,如果更改成功,则提示OK。
OBJECT REFCOUNT key | OBJECT ENCODING key | OBJECT IDLETIMEkey
SORT key [BY pattern] [LIMIT offset count] [GET pattern] [ASC|DESC] [ALPHA] [STORE destination]
这个方法只能用在LIST、SET、ZSET上,这里的pattern和之前的keys的pattern是一样的,LIMIT则是用来限制返回的偏移量和数量,GET是获取返回的指定的key的内容,ASC是升序、DESC是降序, ALPHA则是用在对字符串进行排序的时候,STORE则是指定存储的地方,可以指定到一个key上,这样就可以通过GET来访问到。
STRING
集合了GET和SET的功能,不过其返回的是该键被设置之前的值,但是其的值已经发生了改变 ,注意如果之前没有该键,则返回nil。
注意在key已经存在的情况下,不进行任何操作,也就是说 SET if key not exist;可能存在一个锁的问题。
从偏移量开始设置,注意的是当这个value不足以把之前的value给覆盖掉时,那么仍然会显示之前没有被覆盖掉的值。这里返回的是字符串总的长度。如果空白字符串不存在的话,则相当于在空白字符串上进行操作。
SETBIT key offset set_or_clean
将字符串看作是二进制,并且将字符串指定偏移量的二进制位设置为指定值,可以是set(1)或者clean(0)。同样的,如果key不存在,则帮其进行设置。返回未设置之前的bit值。
LIST
相当于LPOP的阻塞版本,如果其列表没有元素的时候,则会一直阻塞到列表中存在值并且进行LPOP操作,我们还可以设置超时时间,如果是0的话,则表明其可以阻塞到无限时间长。
删除列表中和value相等的元素。这个取决于count的值,如果为正数,正向搜索删除,如果为负数,反向搜索删除,如果等于0,则全部删除;返回被删除的个数。
将source中的尾元素弹出并且插到destination列表的头元素的位置上,可以简单的理解为其进行了插队的操作;如果destination不存在则默认设置为空列表,但是如果source不存在则不进行任何的操作。返回弹出的元素。
SET
SADD key-name member[member...]
SREM key-name member[member...]
SRANDMEMBER key-name [count]
随机的返回该集合的count个元素,如果count是正数的话,不会重复,但是是负数的话,则可能就会重复。如果count不提供,则默认返回一个。
SDIFF key-name [key-name...]
SDIFFSTORE dest-key key-name [key-name...]
SINTER key-name [key-name...]
SINTERSTORE dest-key key-name [key-name...]
SUNION key-name [key-name...]
SUNIONSTORE dest-key key-name [key-name...]
有序集合
ZADD key-name score member [score member...]
ZREM key-name member [member..]
ZRANGE key-name start stop [WITHSCORES]
返回排名介于start到stop的成员,如果WITHSCORES为True的话,则分值也一起返回,如果stop为-1的话,则返回全部。
分成REV和RANK来看,REV:成员从大到小进行排列,RANK:返回具体的排名位置,也就是说集合中分数最大的成员的排名为0。如果不存在该成员,则返回nil。
ZREVRANGE key-name start stop [WITHSCORES]
分成REV和RANGE来看,REV:成员从大到小进行排列,RANGE:排名介于start到stop的成员。注意是逆序的。
ZRANGEBYSCORE key-name min max [WITHSCORES] [LIMIT offset count]
ZREVRANGEBYSCORE key-name max min [WITHSCORES] [LIMIT offset count]
ZREMRANGEBYSCORE key-name min max [WITHSCORES] [LIMIT offset count]
ZINTERSTORE dest-key key-name [key-name...]
ZUNIONSTORE dest-key key-name [key-name...]
散列
HMSET key-name key value [key value...]
HMGET key-name key [key...]
HDEL key-name key [key...]
HSCAN key-name cursor [MATCH pattern] [COUNT count]
迭代哈希里面的函数。
