博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
redis操作数据-sets
阅读量:6294 次
发布时间:2019-06-22

本文共 2802 字,大约阅读时间需要 9 分钟。

hot3.png

1.介绍

        set 的是通过 hash table 实现的,所以添加、删除和查找的复杂度都是 O(1)。hash table 会随着添加或者删除自动的调整大小。需要注意的是调整 hash table 大小时候需要同步(获取写锁)会阻塞其他读写操作,可能不久后就会改用跳表(skip list)来实现,跳表已经在 sorted set 中使用了。关于 set 集合类型除了基本的添加删除操作,其他有用的操作还包含集合的取并集(union),交(intersection),差集(difference)。通过这些操作可以很容易的实现 sns中的好友推荐和 blog 的 tag 功能.

2.命令

2.1 sadd向key中添加数据

127.0.0.1:6379> sadd myset hello(integer) 1

2.2 smembers显示key中所有的value

127.0.0.1:6379> smembers myset1) "hello"

2.3 srem 删除key中指定value的值

127.0.0.1:6379> srem myset hello(integer) 1127.0.0.1:6379> smembers myset(empty list or set)

2.4 spop,随机返回并删除名称为key的set中的一个元素

127.0.0.1:6379> sadd myset tonva(integer) 1127.0.0.1:6379> sadd myset huage(integer) 1127.0.0.1:6379> sadd myset hello(integer) 1127.0.0.1:6379> smembers myset1) "huage"2) "tonva"3) "hello"127.0.0.1:6379> spop myset"hello"127.0.0.1:6379> smembers myset1) "huage"2) "tonva"127.0.0.1:6379> spop myset"tonva"127.0.0.1:6379> smembers myset1) "huage"

2.5 sdiff 返回所有给定key与第一个key的差集(前面-后面后保留前面剩下的)

127.0.0.1:6379> smembers myset1) "three"2) "two"3) "one"127.0.0.1:6379> smembers myset21) "two"2) "one"127.0.0.1:6379> smembers myset31) "three"127.0.0.1:6379> sdiff myset myset31) "two"2) "one"127.0.0.1:6379> sdiff myset3 myset(empty list or set)127.0.0.1:6379> smembers myset41) "four"2) "one"127.0.0.1:6379> sdiff myset myset2 myset41) "three"

2.6 sdiffstore ,返回所有key与第一个key的差值,并将结果存为另一个key

127.0.0.1:6379> sdiffstore newset myset myset2(integer) 1127.0.0.1:6379> smembers newset1) "three"

2.7 sinter 返回所有给定key的交集

127.0.0.1:6379> smembers myset1) "three"2) "two"3) "one"127.0.0.1:6379> smembers myset21) "two"2) "one"127.0.0.1:6379> sinter myset myset21) "two"2) "one"

2.8 sinterstore ,放回所有给定key的交集并保存到新的key中

127.0.0.1:6379> sinterstore newset myset myset2(integer) 2127.0.0.1:6379> smembers newset1) "two"2) "one"

2.9 sunion,返回所有给定key的并集

127.0.0.1:6379> sunion myset myset41) "two"2) "three"3) "four"4) "one"

2.10 sunionstore,返回所有给定key的并集,同时存到新key中

127.0.0.1:6379> sunionstore newset myset myset4(integer) 4127.0.0.1:6379> smembers newset1) "two"2) "three"3) "four"4) "one"

2.11 smove,从第一个key中移动value到另外一个key中

127.0.0.1:6379> smembers myset1) "three"2) "two"3) "one"127.0.0.1:6379> smembers myset31) "three"127.0.0.1:6379> smove myset myset3 one(integer) 1127.0.0.1:6379> smembers myset31) "three"2) "one"127.0.0.1:6379> smembers myset1) "three"2) "two"

2.12 scard 返回key中对应的value的个数

127.0.0.1:6379> scard myset(integer) 3

2.13 sismember ,返回key中是否存在指定value的值

127.0.0.1:6379> sismember myset four(integer) 0127.0.0.1:6379> sismember myset two(integer) 1127.0.0.1:6379> smembers myset1) "three"2) "two"3) "one"

2.14 srandmember,随机返回名称为key的其中一个元素,但是不删除元素

127.0.0.1:6379> smembers myset1) "three"2) "two"3) "one"127.0.0.1:6379> srandmember myset"two"127.0.0.1:6379> srandmember myset"one"

转载于:https://my.oschina.net/kittyMan/blog/343750

你可能感兴趣的文章
关于再次查看已做的多选题状态逻辑问题
查看>>
动态下拉菜单,非hover
查看>>
政府安全资讯精选 2017年第十六期 工信部发布关于规范互联网信息服务使用域名的通知;俄罗斯拟建立备用DNS;Google打击安卓应用在未经同意情况下收集个人信...
查看>>
简单易懂的谈谈 javascript 中的继承
查看>>
iOS汇编基础(四)指针和macho文件
查看>>
Laravel 技巧锦集
查看>>
Android 使用 ViewPager+RecyclerView+SmartRefreshLayout 实现顶部图片下拉视差效果
查看>>
Flutter之基础Widget
查看>>
写给0-3岁产品经理的12封信(第08篇)——产品运营能力
查看>>
ArcGIS Engine 符号自动化配置工具实现
查看>>
小程序 · 跳转带参数写法,兼容url的出错
查看>>
flutter error
查看>>
Flask框架从入门到精通之模型数据库配置(十一)
查看>>
10年重新出发
查看>>
2019年-年终总结
查看>>
聊聊elasticsearch的RoutingService
查看>>
让人抓头的Java并发(一) 轻松认识多线程
查看>>
从源码剖析useState的执行过程
查看>>
地包天如何矫正?
查看>>
中间件
查看>>