【list类型和操作】
linsert: 在key对应特定的位置前或者后添加字符串元素; 【用法】:linsert list before 元素 要插入的元素
lset : (将list 中指定下标的元素 替换掉)设置list中指定下标元素的替换值。 【用法】:lset list 元素下标 要插入的新元素
demo:
lrem : 从key 对应的list中删除n个相同指定元素 【用法】:lrem list 个数 元素值
demo:
ltrim:保留指定key的值内范围的数据。【用法】: ltrim list 起始保留元素下标 结束保留元素下标
demo:
lpop :从list的头部删除元素,并返回删除元素。
rpop: 从list的尾部删除元素,并返回删除元素。 【用法】:lpop/rpop list
rpoplpush :从第一个list的尾部 移除元素 添加到第二个list的头部。 【用法】: rpoplpush list1 list2
demo:
【sets类型和操作】
set:是string类型的无序集合;set是通过hash table 进行实现的,添加、删除、修改的复杂度都是0(1);我们可以对集合区交集、并集、差集。集合中不允许重复的值
【可通过这些用来实现sns中的好友推荐(取差集)和blog的tag功能】
sadd:向key 对应的set集合添加元素。添加成功返回1 ;失败返回0。
srem:删除名称为key的set集合中的元素。删除成功返回1; 失败返回0。
spop:随机删除并返回key为set的集合中的元素。
smembers : 查看集合
demo:
redis 127.0.0.1:6379> smembers myset
1) "alibaba"
2) "baidu"
3) "tenxun"
redis 127.0.0.1:6379> sadd myset1 youku
(integer) 1
redis 127.0.0.1:6379> sadd myset1 baidu
(integer) 1
redis 127.0.0.1:6379> sadd myset1 tudou
(integer) 1
redis 127.0.0.1:6379> srem myset tudou
(integer) 0
redis 127.0.0.1:6379> srem myset1 tudou
(integer) 1
redis 127.0.0.1:6379> smembers myset1
1) "baidu"
2) "youku"
redis 127.0.0.1:6379> spop myset1
"youku"
sdiff: 返回所有给定key 与第一个key集合的差集(就是不同元素集合),以给定的第一个key 为标准,谁在前面,返回谁和其他key 不同的集合元素
sdiffstore :将所有给定key 与第一个key集合的差集,并且将结果存储到另外一个key集合中 。 【用法】: sdiffstore 存储差集的key key1 比对的key2
demo:
redis 127.0.0.1:6379> smembers myset1
1) "tudou"
2) "baidu"
redis 127.0.0.1:6379> smembers myset
1) "alibaba"
2) "baidu"
3) "tenxun"
redis 127.0.0.1:6379> sdiff myset myset1
1) "alibaba"
2) "tenxun"
redis 127.0.0.1:6379> sdiff myset1 myset
1) "tudou"
redis 127.0.0.1:6379> sdiffstore myset2 myset1 myset
(integer) 1
redis 127.0.0.1:6379> smembers myset2
1) "tudou"
sinter:取两个key的交集 并返回交集的元素。
sinterstore:取两个key的交集 并将返回交集的元素存储到另外一个key中。 【用法】:sinterstore 存储交集的key key1 比对的key2
sunion:取给定key的并集,并返回并集元素。
sunionstore:取给定key的并集,并返回并集元素存储到另一个key中 。【用法】:类似与交集
demo:
redis 127.0.0.1:6379> sinter myset1 myset
1) "baidu"
redis 127.0.0.1:6379> sinterstore myset3 myset1 myset
(integer) 1
redis 127.0.0.1:6379> smembers myset3
1) "baidu"
redis 127.0.0.1:6379> sunion myset1 myset
1) "alibaba"
2) "baidu"
3) "tudou"
4) "tenxun"
redis 127.0.0.1:6379> sunionstore myset4 muset1 myset
(integer) 3
redis 127.0.0.1:6379> smembers myset4
1) "alibaba"
2) "baidu"
3) "tenxun"
smove:将第一个key对应set中的元素移除,并添加到第二个集合set中。 【用法】 smove 集合key1 集合key2 要移除key1的元素1
scard:返回key对应set的元素个数。
sismember: 校验key对于set中是否存在该元素。
【 sorted sets类型和操作】
sorted sets(zset)是set的一个升级版本,在set集合基础上添加一个顺序属性;这个顺序在添加修改元素时可以指定。每次指定之后,zset集合会自动按照新的值调整顺序。
可以把zset 看成两张mysql表。一张原来存储顺序;一张来存储value元素。key可以理解为zset集合名称。
zadd:向有机集合中添加元素并且指定顺序号;如果元素已经存在,就重新指定顺序号。 【用法】:zadd zset集合 顺序号 元素。
zrem:删除有机集合中的指定元素。
demo:
redis 127.0.0.1:6379> zadd zset1 1 alibaba
(integer) 1
redis 127.0.0.1:6379>
redis 127.0.0.1:6379> zadd zset1 2 baidu
(integer) 1
redis 127.0.0.1:6379> zadd zset1 3 baidu
(integer) 0
redis 127.0.0.1:6379> zrange zset1 0 -1 withscores
1) "alibaba"
2) "1"
3) "baidu"
4) "3"
zincrby:如果往有机集合中元素已经在集合中存在,则该元素的score(顺序)将增加increment,如果元素不存在,则添加元素,其score值为increment值。
demo:
redis 127.0.0.1:6379> zincrby zset1 4 tenxun
"4"
redis 127.0.0.1:6379> zrange zset1 0 -1 withscores
1) "alibaba"
2) "3"
3) "baidu"
4) "3"
5) "tenxun"
6) "4"
redis 127.0.0.1:6379> zincrby zset1 3 alibaba
"6"
redis 127.0.0.1:6379> zrange zset1 0 -1 withscores
1) "baidu"
2) "3"
3) "tenxun"
4) "4"
5) "alibaba"
6) "6"
zrank:按照sores从小到大排序,并且返回指定的元素的下标(下标是从零开始)
zrevrank:按照sores从大到小排序,并且返回指定的元素的下标(下标是从零开始)
zrevrange :按照score的从大到小排序,并且返回整个zset元素
zrangebyscore :返回给定区间的集合元素
zcount: 返回给定区间中元素数量
zcard:zset集合元素数量
demo:
redis 127.0.0.1:6379> zrank zset1 alibaba
(integer) 2
redis 127.0.0.1:6379> zrevrank zset alibaba
(nil)
redis 127.0.0.1:6379> zrevrank zset1 alibaba
(integer) 0
redis 127.0.0.1:6379> zrevrange zset1 0 -1 withscores
1) "alibaba"
2) "6"
3) "tenxun"
4) "4"
5) "baidu"
6) "3"