Redis数据类型(下)
2024-09-04 10:43:14
集合Set
Redis 的集合不是 个线性结构,而是一个哈希表结构,它的内部会根据 hash 分子来
存储和查找数据,理论上 个集合可以存储 232 (大约 42 亿)个元素,因为采用哈希表结
构,所以对于 Redis 集合的插入、删除和查找的复杂度都是 0(1 ),只是我们需要注意:
1.对于集合而言,它的每 个元素都是不能重复的,当插入相同记录的时候都会失败
2.集合是无序的。
3.集合的每 个元素都是 String 数据结构类型。
Red is 的集合可以对于不同的集合进行操作,比如求出两个或者以上集合的交集、 差集和并集等。
sadd/smembers/sismember
sadd key number [member2 .....] 给键为key的集合增加成员,可增加多个
smembers key 返回集合所有成员
sismember key member 判断member是否是key集合的成员
scard,获取集合里面的元素个数
获取集合里面的元素个数
scard key
srem key value 删除集合中元素
srem key member [ member2 .... ]
移除集合中 元素,可以是多个元素
srandmember key 某个整数(随机出几个数)
* 从set集合里面随机取出2个
* 如果超过最大数量就全部取出,
* 如果写的值是负数,比如-3 ,表示需要取出3个,但是可能会有重复值。
srandmember key [count]
count为随机出数的个数,默认为1,为负数则取绝对值
spop key 随机出栈
随机弹 集合的一个元素
注意其随机性 因为集合是无序的
smove key1 key2 在key1里某个值 作用是将key1里的某个值赋给key2
smove src des member
将成员 member 从集合 src 迁移到集合 des
原来集合的值可以说已经没有了,直接去了另一个集合,另一个集合可以存在,不存在则创建
差集:sdiff
交集:sinter
并集:sunion
sdiff key I [key2] 找出两个综合的差集 参数如果是单 key ,那么 Red is 就返回这key 的所有元素
sinter key I [key2] key key2 两个集合的交集。 参数如果是单 key ,那么 Red is 就返回这key 的所有元素
sunion key l [key2] 求两 集合 并集 参数如果是单 key ,那么 Red is 就返回这key 的所有元素
Hash哈希
Redis 中哈希结构就如同 Java map 一样 个对象里面有许多键值对,它是特别
合存储对象的 ,如果内存足够大,那么 Redis hash 结构可以存储 232_ 键值对 40
多亿)。 般而言 不会使用到那么大的一个键值对,所以我们认为 Redis 可以存储很多的
键值对。在 Redis 中, hash 是一个 String 类型的 field value 映射表,因此我们存储的
数据实际在 Redis内存中的一个字符串
hash 的键值对在内存中是一种无序的状态
KV模式不变,但V是一个键值对
hset/hget/hmset/hmget/hgetall/hdel
hset key file value:设置键值对 单个
hget :获取属性值 单个
hmset key field1 value1 [filed2 value2...] 设置键值对, 多个
hmget:获取多个hash指定键的值 多个
hgetall:获取所有hash结构中的值
hdel:删除hash中的某些字段
hlen返回key中的数量
hexists key 在key里面的某个值的key
hkeys/hvals
hkeys:获取所有的键
hvals:获取所有的值
hincrby/hincrbyfloat
hincrby key field incremen:指定给 hash 结构中的某 字段加上 个整,要求该字段也是整数字符串
hincrbyfloat key field increment:指定给 hash 结构中的某 字段加上 个浮点数,要求该字段也是整数字符串
hsetnx:不存在赋值,存在了无效。
hsetnx key field value
有序集合:
只是说它是有序的
和无序集合的主要区别在于每 个元素除了值之外,它还会多一个分数
分数是一个浮点数,在 Java 中是使用双精度表示的
Redis 就可以支持对分数从小到大或者从大到小的排序。这里和无序集合一样,对于
每一个元素都是唯一的 ,但是对于不同元素而 ,它的分数可以一样。
有序集合是依赖 key 标示它是属于哪个集合,依赖分数进行排序,所以值和分数是必须的
zadd/zrange
zadd key score value(value1) 【score2 value2 ...] :增加一个或多个成员,key不存在则创建有序集合
zrangebyscore key 开始score 结束score
zrem key 某score下对应的value值,作用是删除元素
zcard/zcount key score区间/zrank key values值,作用是获得下标值/zscore key 对应值,获得分数
zcard:统计个数
zcount key score: zcount key min max 根据分数返回对应的成员列表
zrank key values:
zrevrank key values值,作用是逆序获得下标值
zrevrange 从大到小的按分数排序
zrevrange key start end
zrevrangebyscore key 结束score 开始score
从大到小的按分数排序
zrevrangebyscore key max min [withscores
最新文章
- getPhysicalNumberOfCells 与 getLastCellNum的区别
- Boost1.62+win7+VC2015编译
- 【转】在ubuntu环境下搭建svn server遇到的一些问题
- Java的多线程(上)
- 制作自己的私有库(cocopods)
- 基于visual Studio2013解决C语言竞赛题之0413同构数
- Sublime Text学习笔记
- [JQuery] Ajax使用过程中的问题总结
- 07、NetCore2.0依赖注入(DI)之生命周期
- SpringBoot核心注解应用
- TSMBIOS
- last与lastb命令 读取的日志文件
- day66 模板小结 [母板继承,块,组件]
- 学习MongoDB 四: MongoDB查询(一)
- 【LeetCode】9. Palindrome Number (2 solutions)
- 为什么 要弄清楚 mysql int(5) int(11) bigint 自建mysql主键id python random 科学计数法
- ref:ThinkPHP Builder.php SQL注入漏洞(<;= 3.2.3)
- jQuery判断元素是否显示 是否隐藏
- GridView绑定数据源 绑定DataReader /DataSet /DataTable
- Ubuntu14.04使用samba服务器共享Home目录
热门文章
- Query performance optimization of Vertica
- 不能修改列 ";。。";,因为它是计算列,或者是 UNION 运算符的结果。
- nodejs的jsonrpc调用
- Node.js学习笔记(三) --- package.json 及cnpm
- thinkphp引入头文件
- JavaScript 递归法排列组合二维数组2
- 日常捕获的野生知识 - javascript获取屏幕大小
- ImageNet download
- matlab练习程序(三角形外接圆)
- mybatis ${}使用注意事项