缓存数据库-redis数据类型和操作(set)
一:Redis 集合(Set)
Redis的Set是string类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
Redis 中 集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。
二:set常用操作
1)sadd(name,values) name对应的集合中添加元素
2)scard(name) 获取name对应的集合中元素个数
3)sdiff(keys, *args) 在第一个name对应的集合中且不在其他name对应的集合的元素集合
4)sdiffstore(dest, keys, *args) 获取第一个name对应的集合中且不在其他name对应的集合,再将其新加入到dest对应的集合中
5)sinter(keys, *args) 获取多一个name对应集合的交集
6)sinterstore(dest, keys, *args) 获取多一个name对应集合的并集,再讲其加入到dest对应的集合中
7)sismember(name, value) 检查value是否是name对应的集合的成员
8)smembers(name) 获取name对应的集合的所有成员
9)smove(src, dst, value) 将某个成员从一个集合中移动到另外一个集合
10)spop(name) 从集合的左侧(头部)移除一个成员,并将其返回
11)srandmember(name, numbers) 从name对应的集合中随机获取 numbers 个元素
12)srem(name, values) 在name对应的集合中删除某些值
13)sunion(keys, *args) 获取多一个name对应的集合的并集
14)sunionstore(dest,keys, *args) 获取多一个name对应的集合的并集,并将结果保存到dest对应的集合中
15)sscan(name, cursor=0, match=None, count=None)
三:示例
[BEGIN] // ::
127.0.0.1:[]> select 选择会话窗口3
OK
127.0.0.1:[]> sadd n1 在集合中增加数据
(integer)
127.0.0.1:[]> sadd n1
(integer)
127.0.0.1:[]> sadd n1
(integer)
127.0.0.1:[]> sadd n1
(integer)
127.0.0.1:[]> SCARD n1 集合中有多少个元素
(integer)
127.0.0.1:[]> sadd n2
(integer)
127.0.0.1:[]> sadd n2
(integer)
127.0.0.1:[]> sadd n2
(integer)
127.0.0.1:[]> sadd n2
(integer)
127.0.0.1:[]> scard n2
(integer)
127.0.0.1:[]> sdiff n1 n2 两个集合的差集在n1中,不在n2中
) ""
) ""
127.0.0.1:[]> sdiff n3 n1 n2
(empty list or set)
127.0.0.1:[]> SDIFFSTORE n3 n1 n2 两个集合的差集在n1中,不在n2中并保存到n3中
(integer)
127.0.0.1:[]> SINTER n1 n2 交集在n1中,也在n2中
) ""
) ""
127.0.0.1:[]> SINTERSTORE n4 n1 n2 交集在n1中,也在n2中,并保存到n4中
(integer)
127.0.0.1:[]> SISMEMBER n1 判断元素在不在集合中
(integer)
127.0.0.1:[]> SMEMBERS n1 查看集合
) ""
) ""
) ""
) ""
127.0.0.1:[]> SMEMBERS n2
) ""
) ""
) ""
) ""
127.0.0.1:[]> SMEMBERS n3
) ""
) ""
127.0.0.1:[]> SMEMBERS n4
) ""
) ""
127.0.0.1:[]> smove n1 n2 把集合n1中元素1移动集合n2中
(integer)
127.0.0.1:[]> SMEMBERS n1
) ""
) ""
) ""
127.0.0.1:[]> SMEMBERS n2
) ""
) ""
) ""
) ""
) ""
127.0.0.1:[]> spop n1 从集合左边移出一个元素并还回
""
127.0.0.1:[]> SMEMBERS n1
) ""
) ""
127.0.0.1:[]> SRANDMEMBER n2 从集体中随即取2个
) ""
) ""
127.0.0.1:[]> SRANDMEMBER n2
) ""
) ""
127.0.0.1:[]> SRANDMEMBER n2
) ""
) ""
127.0.0.1:[]> SRANDMEMBER n2
) ""
) ""
127.0.0.1:[]> SREM n2 从集合中删除一个元素
(integer)
127.0.0.1:[]> SUNION n1 n2 两个集体并集
) ""
) ""
) ""
) ""
127.0.0.1:[]> SUNION n5 n1 n2 两个集体并集,并保存到n5中
) ""
) ""
) ""
) ""
127.0.0.1:[]> SMEMBERS n5
(empty list or set)
127.0.0.1:[]> SUNIONSTORE n5 n1 n2 两个集体并集,并保存到n5中
(integer)
127.0.0.1:[]> SSCAN n5 match
(error) ERR syntax error
127.0.0.1:[]> SSCAN n5 match
) ""
) ) "" [END] // ::
缓存数据库-redis数据类型和操作(set)的更多相关文章
- 缓存数据库-redis数据类型和操作(list)
转: 狼来的日子里! 奋发博取 缓存数据库-redis数据类型和操作(list) 一:Redis 列表(List) Redis列表是简单的字符串列表,按照插入顺序排序.你可以添加一个元素导列表的头部( ...
- 缓存数据库-redis数据类型和操作(string)
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合) 一:String(字符串) string是redis ...
- 缓存数据库-redis数据类型和操作(sorted set)
一:Redis 有序集合(sorted set) Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员. 不同的是每个元素都会关联一个double类型的分数.redis正是 ...
- 缓存数据库-redis数据类型和操作(hash)
一:Redis 哈希(Hash) Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象. Redis 中每个 hash 可以存储 232 - 1 ...
- 缓存数据库redis
什么是Redis? Redis是一个TCP服务器,支持请求/响应协议. 在Redis中,请求通过以下步骤完成: 客户端向服务器发送查询,并从套接字读取,通常以阻塞的方式,用于服务器响应. 服务器处理命 ...
- Redis数据类型及其操作
redis数据类型即操作 1. 字符串 set 设置字符串 格式: set key value 例子: set name kainhuck get 获取字符串的值 格式: get key 例子: ge ...
- 缓存数据库-redis介绍
一:Redis 简介 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis 与其他 key - value 缓存产品有以下三个特点: Redis支持数据的 ...
- Redis数据类型和操作
<"Java技术员"成长手册>,包含框架.存储.搜索.优化.分布式等必备知识,都收集在GitHub JavaEgg ,N线互联网开发必备技能兵器谱,欢迎指导 Redis ...
- 三个缓存数据库Redis、Memcache、MongoDB
>>Memcached Memcached的优点:Memcached可以利用多核优势,单实例吞吐量极高,可以达到几十万QPS(取决于key.value的字节大小以及服务器硬件性能,日常环境 ...
随机推荐
- 小技巧--tab键自动补齐Git命令
Git是什么,你不清楚? 好吧,那么该篇内容对你也木有帮助,请绕道而行.. 我们在使用Git命令时,可以通过tab键,自动补齐Git,特别是在切换分支时特别有用. 如下,当我们想将当前分支切换到bug ...
- Access to a protected network share using Win32 C++
WNetAddConnection2 DWORD WNetAddConnection2A( LPNETRESOURCEA lpNetResource, LPCSTR lpPassword, LPCST ...
- java CPU 100% 排查(转载)
一个应用占用CPU很高,除了确实是计算密集型应用之外,通常原因都是出现了死循环. (友情提示:本博文章欢迎转载,但请注明出处:hankchen,http://www.blogjava.net/hank ...
- 字符串化#、拼接字符##和可变参数宏(...和_ _VA_ARGS_ _)
宏定义的使用与注意事项 ##是一个连接符号,用于把参数连在一起 #是“字符串化”的意思.出现在宏定义中的#是把跟在后面的参数转换成一个字符串#define paster( n ) printf( &q ...
- linux命令总结dd命令详解
一:dd命令 dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换. 注意:指定数字的地方若以下列字符结尾,则乘以相应的数字:b=512:c=1:k=1024:w=2 参数注释: if=文件 ...
- Docker生产实践(六)
镜像构建思路 思路:分层设计 最底层:系统层,构建自己适用的不同操作系统镜像: 中间层:根据运行环境,如php.java.python等,构建业务基础运行环境层镜像: 最上层:根据具体的业务模块,构建 ...
- Java Socket Timeout 总结
原文出处:囚兔 摘要: Java的网络编程Socket常常用于各种网络工具,比如数据库的jdbc客户端,redis客户端jedis,各种RPC工具java客户端,这其中存在一些参数来配置timeout ...
- python 套接字之select poll epoll
python下的select模块使用 以及epoll与select.poll的区别 先说epoll与select.poll的区别(总结) select, poll, epoll 都是I/O多路复用的具 ...
- 应用jfinal发送微信模板消息的一个bug
严格来讲,这不是一个bug,只是我们应用的方式不对.微信发送模板消息的方法是: HttpUtils.post(sendApiUrl + AccessTokenApi.getAccessTokenStr ...
- typdef用法总结
typdef是在计算机编程语言中用来为复杂的声明定义简单的别名用的 typedef与#define有些相似,但更多的是不同,特别是在一些复杂的用法上,就完全不同了,在网上找了很多资料,结合自己遇到的各 ...