redis学习笔记3--set
list:有序且,允许重复数据的链表 存在POP PUSH的概念
set: 无需序,不能重复的集合 主要是ADD
sortSet:有序,不能重复的集合
整体结构图:
http://dl.iteye.com/upload/picture/pic/115943/f6e6971a-0216-3fe3-b89c-4ec5b53b762a.jpg
1.SADD 新增元素
语法: sadd key value
实践:
redis 127.0.0.1:6379> sadd s1 1
(integer) 1
redis 127.0.0.1:6379> sadd s1 2
(integer) 1
redis 127.0.0.1:6379> sadd s2 3
(integer) 1
redis 127.0.0.1:6379> sadd s1 1 // 重复数据不会被添加
(integer) 0
redis 127.0.0.1:6379>
2.SREM 删除元素
语法:srem key value
实践:
redis 127.0.0.1:6379> smembers s1
1) "1"
2) "2"
redis 127.0.0.1:6379> srem s1 1 // 删除s1中的1元素
(integer) 1
redis 127.0.0.1:6379> smembers s1
1) "2"
redis 127.0.0.1:6379>
3.SMEMBERS 列出所有信息 类似list的 lrange
语法:smembers key
实践:
redis 127.0.0.1:6379> smembers s1
1) "2"
redis 127.0.0.1:6379>
4.SISMEMBER 判断是否存在该元素
语法:sismember key value
1:存在该元素
0:不存在
实践:
redis 127.0.0.1:6379> sismember s1 1 存在的元素返回1
(integer) 1
redis 127.0.0.1:6379> sismember s1 3 不存在的元素返回0
(integer) 0
redis 127.0.0.1:6379>
5.SCARD 计算集合中元素总数 size
语法:scard key
实践:
redis 127.0.0.1:6379> scard s1 // 返回集合中元素个数
(integer) 2
redis 127.0.0.1:6379>
6.SMOVE 将集合中一个元素转移到另一个集合中
语法: smove source destination value
实践:
redis 127.0.0.1:6379> smembers s1
1) "1"
2) "2"
redis 127.0.0.1:6379> smembers s2
(empty list or set)
redis 127.0.0.1:6379> smove s1 s2 1 // 将S1中的1移动到了S2中
(integer) 1
redis 127.0.0.1:6379> smembers s1
1) "2"
redis 127.0.0.1:6379> smembers s2
1) "1"
redis 127.0.0.1:6379>
7.SPOP 随机弹出一个元素
语法: spop key
实践:
redis 127.0.0.1:6379> smembers s1
1) "1"
2) "2"
3) "3"
4) "4"
redis 127.0.0.1:6379> spop s1 // 随机弹出一个元素
"3"
redis 127.0.0.1:6379> smembers s1
1) "1"
2) "2"
3) "4"
redis 127.0.0.1:6379>
8.SRANDMEMBER 随机获取一个元素,但是不弹出集合,这个是跟SPOP唯一的区别
语法: SRANDMEMBER
实践:
redis 127.0.0.1:6379> smembers s1
1) "1"
2) "2"
3) "4"
redis 127.0.0.1:6379> SRANDMEMBER s1 // 随机取得一个数据,但是元素不会丢失
"4"
redis 127.0.0.1:6379> smembers s1
1) "1"
2) "2"
3) "4"
redis 127.0.0.1:6379>
9.SINTER 取两个集合的交集
语法:SINTER key1 key2
实践:
redis 127.0.0.1:6379> smembers s2
1) "1"
2) "10"
redis 127.0.0.1:6379> smembers s1
1) "1"
2) "2"
3) "4"
redis 127.0.0.1:6379> sinter s1 s2 // 两个集合共同的元素是 1
1) "1"
redis 127.0.0.1:6379>
10.SINTERSTORE 取两个集合的交集并保存到另一个集合中
语法:SINTERSTORE destination key1 key2
实践:
redis 127.0.0.1:6379> smembers s1
1) "1"
2) "2"
3) "3"
redis 127.0.0.1:6379> smembers s2
1) "1"
2) "10"
redis 127.0.0.1:6379> smembers s3 //这个时候S3是空的
(empty list or set)
redis 127.0.0.1:6379> sinterstore s3 s1 s2 //取两个的交集并保存到s3 中
(integer) 1
redis 127.0.0.1:6379> smembers s3
1) "1"
redis 127.0.0.1:6379>
11.SUNION 取两个集合的并集
语法:SUNION key1 key2
实践:
redis 127.0.0.1:6379> smembers s1
1) "1"
2) "2"
3) "3"
redis 127.0.0.1:6379> smembers s2
1) "1"
2) "10"
redis 127.0.0.1:6379> sunion s1 s2 // 取得两个集合的并集
1) "1"
2) "2"
3) "3"
4) "10"
redis 127.0.0.1:6379>
12.SUNIONSTORE 取两个集合的并集并保存到另一个集合中
语法: SUNIONSTORE destination key1 key2
实践:
redis 127.0.0.1:6379> smembers s1
1) "1"
2) "2"
3) "3"
redis 127.0.0.1:6379> smembers s2
1) "1"
2) "10"
redis 127.0.0.1:6379> sunionstore s4 s1 s2
(integer) 4
redis 127.0.0.1:6379> smembers s4
1) "1"
2) "2"
3) "3"
4) "10"
redis 127.0.0.1:6379>
13.SDIFF 取两个集合的差集
语法:SDIFF key1 key2
实践:
redis 127.0.0.1:6379> smembers s1
1) "1"
2) "2"
3) "3"
redis 127.0.0.1:6379> smembers s2
1) "1"
2) "10"
redis 127.0.0.1:6379> sdiff s1 s2 // 获取的是两个之间的差集
1) "2"
2) "3"
redis 127.0.0.1:6379>
14.SDIFFSTORE 取两个集合的差集 并保存到第三个集合中
语法:SDIFFSTORE key1 key2 diffSet
实践:
redis 127.0.0.1:6379> smembers s1
1) "1"
2) "2"
3) "3"
redis 127.0.0.1:6379> smembers s2
1) "1"
2) "10"
redis 127.0.0.1:6379> sdiffstore s5 s1 s2 // 将差集的数据保存到s5中
(integer) 2
redis 127.0.0.1:6379> smembers s5
1) "2"
2) "3"
分享到:
相关推荐
redis学习笔记redis 是一个开源的 key-value 数据库。它又经常被认为是一个数据结构服务器。 因为它的 value 不仅包括基本的 string 类型还有 list,set ,sorted set 和 hash 类型。当 然这些类型的元素也都是 string...
Redis全套学习笔记 完整版pdf.rar set:添加键值对 get:获取值 apend:追价值 strlen:获取值的长度 setnx:key不存在时,设置key的值 incr:原子递增1 decr:原子递减1 incrby/decrby:递增或者递减指定的数字 ...
它支持存储的 value 类型相对更多,包括 String(字符串)、List(列表)、Set(集合)、Sorted Set(有序集合) 和 Hash(哈希)。在此基础上,Redis 支持各种不同方式的排序。为了保证效率,数据都是缓存在内存中。Redis ...
Redis全套学习笔记,分享的是整理的《Redis 全套学习笔记.pdf》,图文并茂,特别详细,基本上涵盖了 Redis 所有知识点。redis是一个高性能的key-value数据库,它是完全开源免费的,而且redis是一个NOSQL类型数据库,...
和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子...
读 redis阅读理解,带详细注释 说明 本份代码从 clone下来,然后自己添加自己的理解,再次基础上增加函数调用流程注释。 疑问: ... 整数集合数据结构 intset.h和intset.c 压缩列表数据结构 ziplist.h和
概念:Redis (REmote DIctionary Server) 是用 C 语言开发的一个开源的高性能键值对(key-value)数据库。 特征: 1、数据间没有必然的关联关系 2、内部采用单线程机制进行工作 3、高性能。 4、多数据类型支持: ...
spring-parentmaven父pom和子pom的版本号批量修改1 设置新的版本号./mvnw versions:set -DnewVersion=2.4.12 撤销设置./mvnw versions:revert3 提交设置./mvnw versions:commit4.项目打包(同时处理项目所依赖的包)...
\Config::set(‘cache.default’,’redis’); var_dump( \Config::get(‘cache.default’) ); \Config::set(‘cache.default’,’memcached’); var_dump( \Config::get(‘cache.default’) ); 2.Laravel 5 中 \ ...
具体事务和监听请参考文章:redis学习笔记之事务 暂时找到三种实现方式: 1. 通过jedis.setnx(key,value)实现 import java.util.Random; import org.apache.commons.pool.impl.GenericObjectPool.Config; import ...