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的操作相关推荐

  1. Redis命令介绍之键值对操作

    前文已经提及过Redis中对于键值对操作的一些命令,如DEL.EXPIRE / PEXPIRE.TTL / PTTL以及EXISTS.今天我们继续介绍Redis中对键值对操作的相关命令. TYPE T ...

  2. Redis命令:DECR key减1操作

    起始版本:1.0.0 时间复杂度:O(1) 对key对应的数字做减1操作.如果key不存在,那么在操作之前,这个key对应的值会被置为0.如果key有一个错误类型的value或者是一个不能表示成数字的 ...

  3. redis del清除缓存java_redis zset集合操作缓存.java

    getCacheItemSetPage(long keyId, Integer pageNum, Integer pageSize) { return getCache().zrevrangeBySc ...

  4. Redis(八):zset/zadd/zrange/zrembyscore 命令源码解析

    前面几篇文章,我们完全领略了redis的string,hash,list,set数据类型的实现方法,相信对redis已经不再神秘. 本篇我们将介绍redis的最后一种数据类型: zset 的相关实现. ...

  5. php7.2 安装phpredis扩展,以及phpredis操作redis命令列表

    phpredis是redis的php的一个扩展,效率是相当高有链表排序功能,对创建内存级的模块业务关系;以下是redis官方提供的命令使用技巧: 下载安装地址如下: PHP7.2 安装Redis扩展 ...

  6. php操作redis命令

    phpredis是redis的php的一个扩展,效率是相当高有链表排序功能,对创建内存级的模块业务关系 很有用;以下是redis官方提供的命令使用技巧: 下载地址如下: https://github. ...

  7. redis命令和Spring 的RedisTemplate操作对应关系

    前言 有时候熟悉了redis命令,但是用到spring的RedisTemplte的时候就又糊涂了,命令和操作是谁对谁的,我就有点晕了,所以花了点时间整理了一下. 首先,redis命令执行可以在本地环境 ...

  8. Redis-学习笔记02【Redis命令操作】

    Java后端 学习路线 笔记汇总表[黑马程序员] Redis-学习笔记01[Redis环境搭建] Redis-学习笔记02[Redis命令操作] Redis-学习笔记03[Redis持久化] Redi ...

  9. Redis命令——Keys相关

    from:http://blog.csdn.net/codolio/article/details/6411684 以下为Redis中有关Keys操作的一些命令,内容主要来源于Redis的官方文档.如 ...

最新文章

  1. GreenDao 3.x 注解中ToOne和ToMany的个人理解
  2. Linux--Ubuntu12.04安装NDK
  3. 【多线程】ThreadPoolExecutor 类的使用详解
  4. 如何在钉钉上开发自己的应用_神操作!老妈让我告诉老板,双十一买钉钉。
  5. word2013标题编号变成黑框
  6. 基于Nexys4 DDR的弹球游戏实现
  7. mysql数据库div函数_关于使用mysql中的div函数报错?报错-问答-阿里云开发者社区-阿里云...
  8. java中如何数组是如何赋值的?
  9. Microsoft Updater Application Block 1.5.3 服务器端manifest文件设计 [翻译]
  10. 静态成员 java_JAVA中的静态成员
  11. python算法系列资料集(三)
  12. mayapython开关_Maya Python 简易教程.doc
  13. ubuntu 安装 mono报错 E: Unable to correct problems, you have held broken packages.
  14. 【难题+重点】剑指offer——面试题40:数组中只出现一次的数字
  15. 微软MSDN原版所有系统合集我告诉你,Windows历史操作系统索引
  16. win10下装黑苹果双系统_预算5000的黑苹果/WIN双系统台式电脑组装建议
  17. Python实现word转pdf
  18. 国产高清卫星影像时代来了,打造中国版“谷歌地球”!
  19. BZOJ 2563 阿狸和桃子的游戏
  20. Ubuntu 18.04 修改中国时区

热门文章

  1. Angular项目中使用echarts中国地图
  2. 《黄花黄》曈曈诗作品摘录
  3. 微信SEO优化搜索排名如何做
  4. S5P6818裸机开发(2)-S5P6818 Boot Header解析
  5. tp控制器进阶页面跳转重定向、
  6. Ubuntu18.04编译c语言程序
  7. 容器云系列之Kubernetes基本架构介绍
  8. Error: @vitejs/plugin-vue requires vue (>=3.2.13) or @vue/compiler-sfc to be present in the dependen
  9. C/C++二维数组顺时针翻转90度
  10. Linux 环境变量配置全攻略,超详细~