redis命令之set和zset的操作
redis里面常用的操作set类型(每个元素都是一个值)的命令:
sadd key member1 [member2 member3 ....]:向key对应的set中添加
sinter set1 set2:交集
sunion set1 set2:并集
sdiff set1 set2:差集 前后顺序影响结果
smembers key :查询所有元素
sismember oneset member:查询member是否在oneset 中,返回0或1
scard key:返回set的元素个数
smove sourceset destinationset member:把member从源集合sourceset移动到目标集合destinationset
srem oneset value1 value2...:从oneset 表示的set中删除元素value1 value2....
redis里面的set与list有什么区别?
set是无序的,因此没有像list那样的在头部插入还是在尾部插入的说法。set中放入的元素也没有先后之分。跟list相同的是,你也可以把set理解成一个箱子,往里面放东西就是了。
1.定义两个set,一个叫friends,元素有xinjiao qinghuai zhao qian;一个叫workmate,元素有fanfan caodan zhao sun
192.168.23.112:6379> sadd friends xinjiao qinghuai zhao qian (integer) 4 192.168.23.112:6379> sadd workmate fanfan caodan zhao sun (integer) 4 192.168.23.112:6379> smembers workmate 1) "caodan" 2) "fanfan" 3) "sun" 4) "zhao" 192.168.23.112:6379> smembers workmate 1) "caodan" 2) "fanfan" 3) "sun" 4) "zhao" 192.168.23.112:6379> scard friends (integer) 4
2.求集合set的交集、并集、差集
192.168.23.112:6379> sinter friends workmate 1) "zhao" 192.168.23.112:6379> sunion friends workmate 1) "qinghuai" 2) "sun" 3) "fanfan" 4) "qian" 5) "xinjiao" 6) "caodan" 7) "zhao" 192.168.23.112:6379> sdiff friends workmate 1) "xinjiao" 2) "qian" 3) "qinghuai" 192.168.23.112:6379> sdiff workmate friends 1) "fanfan" 2) "caodan" 3) "sun"
注意:这些集合的交集、并集、差集操作并不会影响redis集合里面的值,只是求出计算后的结果罢了。
3.判断一个元素在集合中是否存在用sismember,存在返回1,不存在返回0
192.168.23.112:6379> sismember friends haha (integer) 0 192.168.23.112:6379> sismember friends zhao (integer) 1
4.元素在集合之间的移动
192.168.23.112:6379> smove friends workmate qian (integer) 1 192.168.23.112:6379> smembers friends 1) "xinjiao" 2) "qinghuai" 3) "zhao" 192.168.23.112:6379> smembers workmate 1) "caodan" 2) "fanfan" 3) "sun" 4) "zhao" 5) "qian"
说明:smove第一个参数是源头,第二个参数是目的地,第三个参数是要移动的值。
再来看看zset命令。
zset在redis里面指的是sort set类型,顾名思义,这种类型就是可以排序的set,因为在zset里面的每个元素都是值和权的集合,redis里面常用的zset相关命令如下:
zadd zset1 score1 member1 [score2 member2....]:如 zadd topic 33 9 ,id位9的帖子点击量为33
zrevrange zset1 [start end] withscores:把zset1按权逆序排列,返回排列后的member,start end指定要操作的个数,下标从0开始,[]表示闭区间,下同,withscores可加可不加,表示是否显示member对应的权值
zrange zset1 [start end] withscores:和zrevrange类似,只不过是正常顺序排列,withscores可加可不加,表示是否显示score
zrank zset1 member:把名为zset1的sort set 按权从小到大排序,并返回member在排序后的zset中的下标(从0开始)
zrevrank zset1 member:类似zrank,唯一不同的是zrevrank是按权从大到小排序
zcard zset1:zset1里面的元素个数
zscore zset1 member:返回member对应的权值
zrem zset1 member:按member名称来删除指定元素
zincrby zset1 num member:按num的大小增加member在zset1中的权值,即修改menber的权值
zremrangebyrank zset1 [min max]:先按权按从小到大来排序,再删除下标在min和max之间的元素,min 和max分别指从0开始的下标
zcount zset1 [min max]:返回score值在min和max之间的元素个数
一、定义一个aihao的有序集合
192.168.23.112:6379> zadd aihao 100 play 50 work 60 read 90 money 88 film 0 sad 99 happy (integer) 7
二、zrange与zrevrange,可以看到zrange就是取出aihao里面的members成员,并默认按权值从小到大的顺序排序
192.168.23.112:6379> zrange aihao 0 100 1) "sad" 2) "work" 3) "read" 4) "film" 5) "money" 6) "happy" 7) "play" 192.168.23.112:6379> zrange aihao 0 100 withscores1) "sad"2) "0"3) "work"4) "50"5) "read"6) "60"7) "film"8) "88"9) "money" 10) "90" 11) "happy" 12) "99" 13) "play" 14) "100" 192.168.23.112:6379> zrevrange aihao 0 100 1) "play" 2) "happy" 3) "money" 4) "film" 5) "read" 6) "work" 7) "sad" 192.168.23.112:6379> zrevrange aihao 0 100 withscores1) "play"2) "100"3) "happy"4) "99"5) "money"6) "90"7) "film"8) "88"9) "read" 10) "60" 11) "work" 12) "50" 13) "sad" 14) "0"
三、zrank与zrevrank,拿zrank来说,其实就是先把aihao执行zrange排序,再取出happy在排序后的集合中的下标并返回
192.168.23.112:6379> zrank aihao happy (integer) 5 192.168.23.112:6379> zrevrank aihao happy (integer) 1
四、修改已有member的权值
192.168.23.112:6379> zincrby aihao 5 money "95" 192.168.23.112:6379> zscore aihao money "95"
五、zremrangebyrank
192.168.23.112:6379> zrange aihao 0 100 1) "sad" 2) "work" 3) "read" 4) "film" 5) "money" 6) "happy" 7) "play" 192.168.23.112:6379> zremrangebyrank aihao 1 2 (integer) 2 192.168.23.112:6379> zrange aihao 0 100 1) "sad" 2) "film" 3) "money" 4) "happy" 5) "play"
六、zcount返回权值在指定区间内的元素个数
192.168.23.112:6379> zrange aihao 0 100 withscores1) "sad"2) "0"3) "film"4) "88"5) "money"6) "95"7) "happy"8) "99"9) "play" 10) "100" 192.168.23.112:6379> zcount aihao 0 90 (integer) 2
redis命令之set和zset的操作相关推荐
- Redis命令介绍之键值对操作
前文已经提及过Redis中对于键值对操作的一些命令,如DEL.EXPIRE / PEXPIRE.TTL / PTTL以及EXISTS.今天我们继续介绍Redis中对键值对操作的相关命令. TYPE T ...
- Redis命令:DECR key减1操作
起始版本:1.0.0 时间复杂度:O(1) 对key对应的数字做减1操作.如果key不存在,那么在操作之前,这个key对应的值会被置为0.如果key有一个错误类型的value或者是一个不能表示成数字的 ...
- redis del清除缓存java_redis zset集合操作缓存.java
getCacheItemSetPage(long keyId, Integer pageNum, Integer pageSize) { return getCache().zrevrangeBySc ...
- Redis(八):zset/zadd/zrange/zrembyscore 命令源码解析
前面几篇文章,我们完全领略了redis的string,hash,list,set数据类型的实现方法,相信对redis已经不再神秘. 本篇我们将介绍redis的最后一种数据类型: zset 的相关实现. ...
- php7.2 安装phpredis扩展,以及phpredis操作redis命令列表
phpredis是redis的php的一个扩展,效率是相当高有链表排序功能,对创建内存级的模块业务关系;以下是redis官方提供的命令使用技巧: 下载安装地址如下: PHP7.2 安装Redis扩展 ...
- php操作redis命令
phpredis是redis的php的一个扩展,效率是相当高有链表排序功能,对创建内存级的模块业务关系 很有用;以下是redis官方提供的命令使用技巧: 下载地址如下: https://github. ...
- redis命令和Spring 的RedisTemplate操作对应关系
前言 有时候熟悉了redis命令,但是用到spring的RedisTemplte的时候就又糊涂了,命令和操作是谁对谁的,我就有点晕了,所以花了点时间整理了一下. 首先,redis命令执行可以在本地环境 ...
- Redis-学习笔记02【Redis命令操作】
Java后端 学习路线 笔记汇总表[黑马程序员] Redis-学习笔记01[Redis环境搭建] Redis-学习笔记02[Redis命令操作] Redis-学习笔记03[Redis持久化] Redi ...
- Redis命令——Keys相关
from:http://blog.csdn.net/codolio/article/details/6411684 以下为Redis中有关Keys操作的一些命令,内容主要来源于Redis的官方文档.如 ...
最新文章
- GreenDao 3.x 注解中ToOne和ToMany的个人理解
- Linux--Ubuntu12.04安装NDK
- 【多线程】ThreadPoolExecutor 类的使用详解
- 如何在钉钉上开发自己的应用_神操作!老妈让我告诉老板,双十一买钉钉。
- word2013标题编号变成黑框
- 基于Nexys4 DDR的弹球游戏实现
- mysql数据库div函数_关于使用mysql中的div函数报错?报错-问答-阿里云开发者社区-阿里云...
- java中如何数组是如何赋值的?
- Microsoft Updater Application Block 1.5.3 服务器端manifest文件设计 [翻译]
- 静态成员 java_JAVA中的静态成员
- python算法系列资料集(三)
- mayapython开关_Maya Python 简易教程.doc
- ubuntu 安装 mono报错 E: Unable to correct problems, you have held broken packages.
- 【难题+重点】剑指offer——面试题40:数组中只出现一次的数字
- 微软MSDN原版所有系统合集我告诉你,Windows历史操作系统索引
- win10下装黑苹果双系统_预算5000的黑苹果/WIN双系统台式电脑组装建议
- Python实现word转pdf
- 国产高清卫星影像时代来了,打造中国版“谷歌地球”!
- BZOJ 2563 阿狸和桃子的游戏
- Ubuntu 18.04 修改中国时区
热门文章
- Angular项目中使用echarts中国地图
- 《黄花黄》曈曈诗作品摘录
- 微信SEO优化搜索排名如何做
- S5P6818裸机开发(2)-S5P6818 Boot Header解析
- tp控制器进阶页面跳转重定向、
- Ubuntu18.04编译c语言程序
- 容器云系列之Kubernetes基本架构介绍
- Error: @vitejs/plugin-vue requires vue (>=3.2.13) or @vue/compiler-sfc to be present in the dependen
- C/C++二维数组顺时针翻转90度
- Linux 环境变量配置全攻略,超详细~