目录
redis 传统 5 大数据类型的运用
string 字符串类型
hash 哈希类型
list 列表类型
set 不重复列表类型
zset 有序集合
首页 数据库 Redis 通过命令和运用场景,带你了解Redis中的五大基础类型

通过命令和运用场景,带你了解Redis中的五大基础类型

Feb 11, 2022 pm 07:51 PM
redis

本篇文章通过命令和运用场景,带大家了解一下Redis中的五大基础类型,命令和实践比较多,希望对大家有所帮助!

通过命令和运用场景,带你了解Redis中的五大基础类型

redis 传统 5 大数据类型的运用

redis 传统 5 大数据类型的落地应用

Redis 介绍:

Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets)] 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel) 和自动 分区(Cluster)提供高可用性(high availability)。【相关推荐:Redis视频教程

redis 命令查询:http://www.redis.cn/commands.html

备注:redis 命令不区分大小写,而 key 是区分大小写的

查询命令帮助:

help @类型名词

示例:

1.png

string 字符串类型

最常用

set key vuue

getkey

同时设置/获取多个键值

MSET key value [key value ...]

MGET key [key ,,,]

数值增减

递增数字 incr key

增加指定的整数 incrby key increment

递减数值 decr key

减少指定的整数 decrby key decrement

获取字符长度

STRLEN key

分布式锁

setnx key value

set key value [EX seconds] [PX milliseconds] [NX|XX]

2.png

  • EX: key 在多少秒后过期
  • PX: key自多少毫秒后过期
  • NX: 当key 不存在的时候,才创建 key. 效果等同于 setnx
  • XX: 当 key 存在的时候,覆盖 key

3.png

运用场景

  • 商品编号、订单号采用 INCR 命令生成
  • 是否喜欢文章点赞

阅读数:只要点击了 rest 地址,直接使用 incr key 命令增加一个数字 1,完成记录数字。

4.png

命令实践

5.png

hash 哈希类型

和 Java 数据结构映射

Map>

一次设置一个字段值

HSET key field value

一次获取一个字段值

HGET key field

一次设置多个字段值

HMSET key field value [fild value ...]

一次获取多个字段值

HMGET key field [field ...]

获取所有字段值

hgetall key

获取某个 key 内的全部数量

hlen

删除一个 key

hdel

命令演示

6.png

应用场景

购物车的早期,当前中小厂可以使用

新增商品 --> hset shopcar:uid1024 334488 1

新增商品 --> hset shopcar:uid2014 334477 1

增加商品数量 --> hincrby shopcar:uid1024 334477 1

商品总数 --> hlen shopcar:uid1024

全部选择 --> hgetall shopcar:uid1024

7.png

list 列表类型

向列表左边添加元素

lpush key value [value ...]

向列表右边添加元素

rpush key value [value ...]

查看列表

lrange key start stop

获取列表中元素的个数

llen key

命令使用

8.png

应用场景

微信文章订阅公众号

1、【xx宝】和 【xx报】发布了文章分别是 11 和 22

2、 作者关注了他们两个,只要他们发布了新的文章,就会推送到我的 list

lpush likearticle: uid1024 11 22

3、查看作者自己的订阅号的全部文章,类似分页,下面 0-10 就是 一次显示 10 条 lrange likearticle:uid1024 0 10

9.png

set 不重复列表类型

添加元素

sadd key member [member ...]

删除元素

srem key member [member ...]

获取集合的所有元素

smembers key

判断元素是否在集合中

sismember key member

获取集合中的元素个数

scard key

从集合中随机弹出一个元素, 元素不删除

srandmember key [数字]

从集合中随机弹出一个元素,出一个删一个

spop key [数字]

集合运算

  • 集合的差集运算 A - B

属于 A 但不属于 B 的元素构造成的集合

sdiff key [key ...]

  • 集合的交集元算 A ^ B

属于 A 同时也属于 B 共同拥有的元素

simter key [key ...]

  • 集合的并集运算 A v B

属于 A 或者属于 B 的元素合并后的集合

sunion key [key ...]

运用场景

微信抽奖小程序

10.png

1、用户 id, 立即参与, sadd key 用户id

2、显示已经有多少人参与了当前有 67231 人参与, scard key

3、抽奖(从 set 中任意选取 N 个中奖人)

srandmember key 2 随机抽奖 2 个人, 元素不会删除

spop key 3 司机抽奖 3 个人, 元素会删除

微信朋友圈点赞

11.png

1、新增点赞 ; sadd pub:msgid 点赞用户id1 点赞用户id2

2、取消点赞;srem pub:msgid 点赞用户id

3、展示所有点过赞的用户 smembers pub:msgid

4、点赞用户数统计,就是常见的待点赞的红色数数字 scard pub:msgid

5、判断某个朋友是否对楼主点过赞, sismember pub:msgid 用户id

微博好友关注社交关系

12.png

共同关注的人

sadd s1 1 2 3 4

sadd s2 2 3 6 8

sinter s1 s2

共同关注:我去某人的微博,马上获取和某人共同关注的人

我关注的人, 也关注了他(大家爱好相同)

我关注了华为余承东, 余承东也关注了张召动, 我和余总有共同的爱好

sadd s1 1 2 3 4 5

sadd s2 3 4 5 6 7

sismember s1 3

sismember s2 3

QQ内推可能认识的人

sadd s1 1 2 3 4 5

sadd s2 3 4 5 6 7

// 共同好友

sinter s1 s2

// 差集

sdiff s1 s2

sdiff s2 s1

zset 有序集合

常用命令

1、 向有序集合中添加一个元素和该元素的分数

2、 添加元素

  • ZADD key score member [score member ...]

3、 按照元素分数从小到达的顺序返回索引从 strat 到 stop 之间的所有元素

  • zrange key start stop [WITHSORES]

4、获取元素的分数

  • zscore key member [member ...]

5、删除元素

  • zrem key member [member ...]

6、 获取指定分数范围的元素

  • zrangebyscore key min max [WITHSCORES] [LIMIT offset count]

7、增加某个元素的分数

  • zincrby key increment member

8、 获取集合中元素的数量

  • zcard key

9、获得指定分数范围内的元素个数

  • zcount key min max

10、按照排名范围删除元素

  • zremrangebyrank key start stop

11、获取元素的排名

  • 从小到大 zrank key member

  • 从大到小 zrevrank key member

应用场景

1、更具商品销售对商品进行排序显示

思路:定义商品销售排行榜(sorted set 集合),key 为 goods:sellsort, 分数为商品销售数量。

商品编号 1001 的销量是 9 , 商品编号 1002 的销量是 15 | zadd goods:sellsort 9 1001 15 1002
有一个顾客又买了 2 件商品 1001 , 商品编号是 1001 响亮增加 2 | zincrby goods:sellsort 2 10001
求商品销量前 10 名 zrange goods:sellsort 0 10 withscores
13.png

2、 抖音热搜

14.png

1、点击视频

ZINCRBY hotavi:20220203 1 八百

ZINCRBY hotavi:20220203 15 八百 2 花木兰

2、展示当日排行前 10 条

zrevrange hotavi:20220203 0 9 withscores

更多编程相关知识,请访问:编程入门!!

以上是通过命令和运用场景,带你了解Redis中的五大基础类型的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它们
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

redis集群模式怎么搭建 redis集群模式怎么搭建 Apr 10, 2025 pm 10:15 PM

Redis集群模式通过分片将Redis实例部署到多个服务器,提高可扩展性和可用性。搭建步骤如下:创建奇数个Redis实例,端口不同;创建3个sentinel实例,监控Redis实例并进行故障转移;配置sentinel配置文件,添加监控Redis实例信息和故障转移设置;配置Redis实例配置文件,启用集群模式并指定集群信息文件路径;创建nodes.conf文件,包含各Redis实例的信息;启动集群,执行create命令创建集群并指定副本数量;登录集群执行CLUSTER INFO命令验证集群状态;使

redis指令怎么用 redis指令怎么用 Apr 10, 2025 pm 08:45 PM

使用 Redis 指令需要以下步骤:打开 Redis 客户端。输入指令(动词 键 值)。提供所需参数(因指令而异)。按 Enter 执行指令。Redis 返回响应,指示操作结果(通常为 OK 或 -ERR)。

redis怎么读源码 redis怎么读源码 Apr 10, 2025 pm 08:27 PM

理解 Redis 源码的最佳方法是逐步进行:熟悉 Redis 基础知识。选择一个特定的模块或功能作为起点。从模块或功能的入口点开始,逐行查看代码。通过函数调用链查看代码。熟悉 Redis 使用的底层数据结构。识别 Redis 使用的算法。

redis数据怎么清空 redis数据怎么清空 Apr 10, 2025 pm 10:06 PM

如何清空 Redis 数据:使用 FLUSHALL 命令清除所有键值。使用 FLUSHDB 命令清除当前选定数据库的键值。使用 SELECT 切换数据库,再使用 FLUSHDB 清除多个数据库。使用 DEL 命令删除特定键。使用 redis-cli 工具清空数据。

redis怎么使用单线程 redis怎么使用单线程 Apr 10, 2025 pm 07:12 PM

Redis 使用单线程架构,以提供高性能、简单性和一致性。它利用 I/O 多路复用、事件循环、非阻塞 I/O 和共享内存来提高并发性,但同时存在并发性受限、单点故障和不适合写密集型工作负载的局限性。

redis怎么查看所有的key redis怎么查看所有的key Apr 10, 2025 pm 07:15 PM

要查看 Redis 中的所有键,共有三种方法:使用 KEYS 命令返回所有匹配指定模式的键;使用 SCAN 命令迭代键并返回一组键;使用 INFO 命令获取键的总数。

redis怎么读取队列 redis怎么读取队列 Apr 10, 2025 pm 10:12 PM

要从 Redis 读取队列,需要获取队列名称、使用 LPOP 命令读取元素,并处理空队列。具体步骤如下:获取队列名称:以 "queue:" 前缀命名,如 "queue:my-queue"。使用 LPOP 命令:从队列头部弹出元素并返回其值,如 LPOP queue:my-queue。处理空队列:如果队列为空,LPOP 返回 nil,可先检查队列是否存在再读取元素。

redis怎么启动服务器 redis怎么启动服务器 Apr 10, 2025 pm 08:12 PM

启动 Redis 服务器的步骤包括:根据操作系统安装 Redis。通过 redis-server(Linux/macOS)或 redis-server.exe(Windows)启动 Redis 服务。使用 redis-cli ping(Linux/macOS)或 redis-cli.exe ping(Windows)命令检查服务状态。使用 Redis 客户端,如 redis-cli、Python 或 Node.js,访问服务器。

See all articles