04_Redis数据类型(set、zset)
【set:集合类型(高中的集合知识)】
集合类型:无序、不可重复
列表类型:有序、可重复
【set类型】
1.添加元素
语法:sadd key member1 member2......
返回值:返回成功添加的元素个数

2.获取集合中的所有元素
语法:smembers key

3.删除集合中某个元素

4.判断元素是否在集合中
语法:sismember key member
返回值:存在,返回1;不存在,返回0。

【set集合之间的运算】
1.差集A-B
描述:属于集合A,但不属于集合B

语法:sdiff key1 key2...

2.集合的交集A∩B
描述:属于集合A 且属于集合B的元素构成的集合


3.集合的并集A∪B
描述:属于A或属于B的元素构成的集合。


【集合的其他命令】
1.获取集合中的元素个数
语法:scard key

2.从集合中弹出一个元素
由于集合是无序的,所有SPOP命令会从集合中随机弹出一个元素。

【SortedSet类型:zset集合】
sortedSet有叫做zset。
zset是有序集合,可排序的,但是要唯一。
zset和set的不同之处在于,zset是会给set的元素添加一个分数,然后通过这个分数进行排序。
【zset类型】
1.添加元素
描述:向有序集合zset中添加一个元素和该元素的分数,如果该集合已经存在则会使用新的分数替换原有的分数。
返回值:新加入到集合中的元素的个数,不包含之前已经存在的元素。
语法:zadd key score1 member1 score2 member2 score3 member3......

2.获取元素的分数
语法:zscore key member

3.删除元素
描述:删除有序集合中的一个或多个成员,不存在的成员被忽略。
语法:zrem key member1 member2......

4.获得排名在某个范围内的元素列表
描述:按照元素分数从小到大的顺序返回索引从start到stop之间的所有元素(包含两端的元素)
语法:zrange key start stop

描述:按照元素分数从大到小的顺序返回索引从start到stop之间的所有元素(包含两端的元素)
语法:zrevrange key start stop

描述:如果需要获得元素的分数,可以在尾部加上withscores参数
语法:zrange key start stop[withscores]
zrevrange key start stop [withscores]

5.获取元素的排名
描述:从小到达获取某个元素的排名
语法:zrank key member

描述:从大到小获取某个元素的排名
语法:zrevrank key member

6.获取指定分数范围内的元素
语法:zrangebyscore key min max [withscores] [limit offset count]

7.增加某个元素的分数
语法:zincrby key increment member
注意:不可以将increment和member的顺序调换,与之前的不一样

8.获取集合中元素的数量
语法:zcard key

9.获取指定分数范围内的元素个数
语法:zcount key min max

10.按照分数排名范围删除元素
语法:zremrangebyrank key start stop

11.按照分数范围删除元素
语法:zremrangebyscore key min max

【zset应用:商品销售排行榜】
需求:根据商品销售量对商品进行排名显示。
思路:定义商品销售排行榜(sorted set集合),key为items:sellsort,分数为商品的销售量。
写入商品销售量:(编号1001商品,销售量9;编号1002商品,销售量10;编号1003商品,销售量999)

04_Redis数据类型(set、zset)的更多相关文章
- Redis数据类型之ZSet(五)
前言:有序集合zset跟其他类型一样,同样有几种编码方式.主要有两种编码方式,REDIS_ENCODING_ZIPLIST和REDIS_ENCODING_SKIPLIST.ziplist可以表示较小的 ...
- NoSQL 之Redis的5大数据类型
NoSQL 之Redis的5大数据类型 Redis的五大数据类型也称五大数据对象:了解过6大数据结构,Redis并没有直接使用这些结构来实现键值对数据库,而是使用这些结构构建了一个对象系统redisO ...
- Redis常用数据类型以及操作
Redis常用数据类型以及操作 目录 Redis常用数据类型以及操作 一.String数据类型 1. SET/GET/APPEND/STRLEN 2. INCR/DECR/INCRBY/DECRBY ...
- Redis数据类型:五大基本数据类型及三种特殊类型
String (字符串类型) String是redis最基本的类型,你可以理解成Memcached一模一样的类型,一个key对应一个value. String类型是二进制安全的,意思是redis的st ...
- python就业班-淘宝-目录.txt
卷 TOSHIBA EXT 的文件夹 PATH 列表卷序列号为 AE86-8E8DF:.│ python就业班-淘宝-目录.txt│ ├─01 网络编程│ ├─01-基本概念│ │ 01-网络通信概述 ...
- 《Redis开发与运维》读书笔记
一.初始Redis 1.Redis特性与优点 速度快.redis所有数据都存放于内存:是用C语言实现,更加贴近硬件:使用了单线程架构,避免了多线程竞争问题 基于键值对的数据结构,支持的数据结构丰富.它 ...
- GEO(地理信息定位)
核心知识点: 1.GEO是利用zset来存储地理位置信息,可以用来计算地理位置之间的距离,也可以做统计: 2.命令:geoadd geopos geodist geohash georadius/ge ...
- Redis和SpringDataRedis
一.Redis简介 Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库,运行在内存中,由ANSI C编写.企业开发通常采用Redis来实现缓存.同类的产品还有memcac ...
- Redis(三)Redis附加功能
一.慢查询分析 许多存储系统(例如MySql)提供慢查询日志帮助开发和运维人员定位系统存在的慢操作. 所谓慢查询日志就是系统在命令执行前后计算每条命令的执行时间,当超过预设阈值,就将这条命令的相关信息 ...
随机推荐
- [国家集训队]部落战争 最大流 BZOJ2150
题目描述 lanzerb的部落在A国的上部,他们不满天寒地冻的环境,于是准备向A国的下部征战来获得更大的领土. A国是一个M*N的矩阵,其中某些地方是城镇,某些地方是高山深涧无人居住.lanzerb把 ...
- CentOS7更换yum源为阿里云镜像源
1. 备份原来的yum源 cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak 2.设置aliyun的y ...
- 非阻塞模式ServerSocketChannel 聊天室服务器端
import java.io.IOException; import java.net.InetSocketAddress; import java.nio.ByteBuffer; import ja ...
- POJ_2431 Expedition 【数据结构】
一.题面 POJ2431 二.分析 主要说几个坑 1.给出的点需要根据下标排序. 2.根据不同的方式要把起始点或者终点加进去.我没有转换距离,而是直接从起始点到终点根据距离不断相减判断的,那么起点就是 ...
- Poj:1064 : :Cable master (假定一个解并判断是否可行)(二分搜索答案)
Description Inhabitants of the Wonderland have decided to hold a regional programming contest. The J ...
- linux 工具(1)------终端提示符配置
Linux环境变量,PS1用于设置终端的提示符. 设置规则 设置方法 设置规则 \d :代表日期,格式为 Weekday Month Date,例如 "Mon Aug 1" \H ...
- 【Python】txt数据处理
实战场景 使用safe3wvs扫描,扫描完成后会在当前目录下生成一个日志文件spider.log,截图如下. 现要求将存在sql注入的url地址整理到spider_new.log文件中,下面分享一个自 ...
- Notepad++编译和运行Java
首先要让Notepad++编译和运行Java,前提是电脑里已经配置好了Java的环境(这里可以参考我博客里关于Java环境配置的那篇随笔). 在Notepad++上面的选项栏中找到 插件---> ...
- PIE SDK矢量数据简单渲染
1. 功能简介 PIE SDK对数据的符号化分为矢量数据渲染和栅格数据渲染两大类. 目前PIE SDK中针对矢量数据渲染包括简单渲染.唯一值渲染.分级渲染.自定义渲染:针对栅格数据渲染包括拉伸渲染.R ...
- html自定义垂直导航菜单
html自定义垂直导航菜单(目前只支持上级+下级两级菜单) 由于工作的需要,昨天花了三个多小时的事件整理了一份关于垂直导航二级菜单,可以通过js配置的方式初始化菜单box(测试环境:chrome 49 ...