Redis的基础操作命令(二)
2016-08-03 12:02
633 查看
四 sets类型操作
set 是集合,和我们数学中的集合概念相似,对集合的操作有添加删除元素,有对多个集合求交并差等操作, 操作中 key 理解为集合的名字。
Redis 的 set 是 string 类型的无序集合。 set 元素最大可以包含(2 的 32 次方)个元素。
set 的是通过 hash table 实现的,所以添加、删除和查找的复杂度都是 O(1)。 hash table 会随
着添加或者删除自动的调整大小。需要注意的是调整 hash table 大小时候需要同步(获取写
锁)会阻塞其他读写操作,可能不久后就会改用跳表( skip list)来实现,跳表已经在 sorted
set 中使用了。关于 set 集合类型除了基本的添加删除操作,其他有用的操作还包含集合的
取并集(union),交集(intersection),差集(difference)。通过这些操作可以很容易的实现 sns
中的好友推荐和 blog 的 tag 功能。
1 sadd
向名称为key的的set中添加元素:127.0.0.1:6379> sadd settest "Alex" (integer) 1 127.0.0.1:6379> smembers settest 1) "Bob" 2) "Alex"
2 srem
删除名称key的set中的元素。127.0.0.1:6379> sadd tyutclass 1201 (integer) 1 127.0.0.1:6379> sadd tyutclass 1202 (integer) 1 127.0.0.1:6379> sadd tyutclass 1203 (integer) 1 127.0.0.1:6379> sadd tyutclass 1204 (integer) 1 127.0.0.1:6379> srem tyutclass 1201 (integer) 1 127.0.0.1:6379> smembers tyutclass 1) "1202" 2) "1203" 3) "1204"
3 spop
随机删除一个元素。127.0.0.1:6379> spop tyutclass "1203" 127.0.0.1:6379> smembers tyutclass 1) "1202" 2) "1204"
4 sdiff
返回与第一个key和第二个key的差集,也就是第一个key当中有的,第二个当中没有的元素。127.0.0.1:6379> SMEMBERS tyutclass 1) "1202" 2) "1204" 127.0.0.1:6379> SMEMBERS tyutclass1 1) "1201" 2) "1202" 127.0.0.1:6379> SDIFF tyutclass tyutclass1 1) "1204"
5 sdiffstore
返回差集并保存到另一个key当中。127.0.0.1:6379> SDIFFSTORE tyutclass2 tyutclass tyutclass1 (integer) 1 127.0.0.1:6379> SMEMBERS tyutclass2 1) "1204"
6 sinter
返回给你所有key的交集。127.0.0.1:6379> SINTER tyutclass tyutclass1 1) "1202"
7 sinterstore
返回交集,并保存到另一个key。127.0.0.1:6379> SINTERSTORE tyutclass3 tyutclass tyutclass1 (integer) 1 127.0.0.1:6379> SMEMBERS tyutclass3 1) "1202"
8 sunion
返回给定key的并集。127.0.0.1:6379> SUNION tyutclass tyutclass1 1) "1201" 2) "1202" 3) "1204"
9 sunionstore
返回并集并保存到另一个key。127.0.0.1:6379> SUNIONSTORE tyutclass4 tyutclass tyutclass1 (integer) 3 127.0.0.1:6379> SMEMBERS tyutclass4 1) "1201" 2) "1202" 3) "1204"
10 smove
从第一个key中移除元素,保存到第二个key中。127.0.0.1:6379> SMEMBERS tyutclass 1) "1202" 127.0.0.1:6379> SMEMBERS tyutclass1 1) "1201" 2) "1202" 3) "1204"
11 scard
返回给定key的元素个数。127.0.0.1:6379> SCARD tyutclass1 (integer) 3
12 sismember
测试key中是否包含某元素。127.0.0.1:6379> SISMEMBER tyutclass1 1201 (integer) 1
13 srandmember
随机返回key中某个或几个元素,但是不删除。127.0.0.1:6379> SRANDMEMBER tyutclass1 2 1) "1202" 2) "1201"
五 sorted sets类型操作
sorted set 是 set 的一个升级版本, 它在 set 的基础上增加了一个顺序属性,这一属性在添加修改元素的时候可以指定,每次指定后, zset 会自动重新按新的值调整顺序。
1 zadd
添加元素。127.0.0.1:6379> ZADD class1 1 1201 (integer) 1 127.0.0.1:6379> ZADD class1 2 1202 (integer) 1 127.0.0.1:6379> ZADD class1 3 1203 (integer) 1 127.0.0.1:6379> ZRANGE class1 0 -1 withscores 1) "1201" 2) "1" 3) "1202" 4) "2" 5) "1203" 6) "3"
2 zrem
删除元素。127.0.0.1:6379> zrem class1 1203 (integer) 1 127.0.0.1:6379> ZRANGE class1 0 -1 withscores 1) "1201" 2) "1" 3) "1202" 4) "2"
3 zincrby
如果指定key当中存在该元素,则score加指定的值,如果不存在,则添加该元素,并且score为指定的值。127.0.0.1:6379> ZRANGE class1 0 -1 withscores 1) "1201" 2) "1" 3) "1202" 4) "2" 127.0.0.1:6379> ZINCRBY class1 2 1201 "3" 127.0.0.1:6379> ZRANGE class1 0 -1 withscores 1) "1202" 2) "2" 3) "1201" 4) "3"
4 zrank
返回key当中的指定元素下标位置。按照score从小到大排序。127.0.0.1:6379> ZRANGE class1 0 -1 withscores 1) "1202" 2) "2" 3) "1201" 4) "3" 127.0.0.1:6379> ZRANk class1 1201 (integer) 1
5 zrevrank
同4,按照从大到小排序。127.0.0.1:6379> ZREVRANk class1 1201 (integer) 0
6 zrangebyscore
返回指定score区间内的元素。127.0.0.1:6379> ZRANGEBYSCORE class1 2 3 withscores 1) "1202" 2) "2" 3) "1201" 4) "3"
7 zcount
返回指定score区间内元素的数量。127.0.0.1:6379> zcount class1 2 3 (integer) 2
8 zcard
返回集合中元素个数。127.0.0.1:6379> ZCARD class1 (integer) 2
9 zscore
返回给定元素的score。127.0.0.1:6379> ZSCORE class1 1202 "2"
10 zremrangebyrank
删除排序后下标为指定区间的元素。127.0.0.1:6379> ZREMRANGEBYRANK class1 1 1 (integer) 1 127.0.0.1:6379> ZRANGE class1 0 -1 1) "1202"
11 zrangebylex
返回指定集合中的元素。127.0.0.1:6379> zadd names 0 Alex 0 Bob 0 Cater 0 Diamond 0 Fox (integer) 5 127.0.0.1:6379> ZRANGEBYLEX names - (z 1) "Alex" 2) "Bob" 3) "Cater" 4) "Diamond" 5) "Fox" 127.0.0.1:6379> ZRANGEBYLEX names - (b 1) "Alex" 2) "Bob" 3) "Cater" 4) "Diamond" 5) "Fox" 127.0.0.1:6379> ZRANGEBYLEX names - (B 1) "Alex" 127.0.0.1:6379> ZRANGEBYLEX names [B [D 1) "Bob" 2) "Cater"
12 zremrangebylex
删除指定集合区间内的元素。127.0.0.1:6379> ZREMRANGEBYLEX names (D [F (integer) 1 127.0.0.1:6379> ZRANGE names 0 -1 1) "Alex" 2) "Bob" 3) "Cater" 4) "Fox"
相关文章推荐
- redis基础数据操作命令练习
- redis基础命令之key基本操作命令
- redis 基础操作命令
- Redis基础操作命令及对应的Python操作Redis方法
- [基础]LINUX下SFTP常用命令操作
- 常用redis操作命令
- redis中 hash类型的操作命令
- shell编程基础(3.常用概念命令与操作
- LINUX基础操作——LINUX的基本常用命令
- RHEL6基础之五x-windows界面下的基本操作及内外部命令解释
- GIT 搭建、定制、生成patch及打补丁、git基础操作命令
- Redis学习手册(Key操作命令)
- 关于Linu型的一些基础常见操作命令(三)——文件属性操作
- Redis学习手册(Key操作命令)
- Linux入门基础 #1:命令行bash基本操作
- 关于Linu型的一些基础常见操作命令(一)
- Linux基础 - 第六章 Linux 常用操作命令
- Redis 数据操作命令
- linux 操作常用基础命令(1)
- Redis命令(一)基本keys操作命令