Redis的数据类型

news/2024/12/29 22:52:40/

参考文档:https://www.runoob.com/redis/redis-tutorial.html

在这里插入图片描述

redis当中一共支持五种数据类型,分别是:

  • string字符串

  • list列表

  • set集合

  • hash表

  • zset有序集合

1、对字符串string的操作

下表列出了常用的 redis 字符串命令

在这里插入图片描述

1 设置值 获取值
set liming value
get liming
2 mset mget 一次性操作多组数据
mset liming value liming1 value1 liming2 value2
mget liming liming1 liming2
3 没有这个键我们才设置
setnx liming3 value
4 将key的值 加一,减一
incr stock 
decr stock
5设置 a存活时间5秒,值是b    验证码
setex a 5 b

2、对hash列表的操作

Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象
Redis 中每个 hash 可以存储 2的32 - 1 键值对(40多亿)
在这里插入图片描述

下表列出了 redis hash 基本的相关命令:

在这里插入图片描述

1、设置值 获取值
hset user username liming
hset user age 18
hget user username
2、批量
hmset user1 username liming age 19 
3、获取所有的键值对
hgetall user
4、获取所有小key
hkeys  user
5、获取所有值
HVALS user
6、删除 
hdel user age

3、对list列表的操作

1、Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)
2、一个列表最多可以包含 2的32 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。

下表列出了列表相关的基本命令:

在这里插入图片描述

1、设置值
lpush list1 1 2 3 4 1
rpush list1 6
2、查看数据
lrange list1 0 -1
3、移除数据
lpop list1
rpop list1

在这里插入图片描述

在这里插入图片描述

4、对set集合的操作

1、Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据
2、Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)
3、集合中最大的成员数为 2的32 - 1 (4294967295, 每个集合可存储40多亿个成员)

下表列出了 Redis 集合基本命令:

在这里插入图片描述

1、添加数据
sadd set1 1 2 3 4 5
2、获取数据
smembers set1
3、获取成员数量
scard set1
4、业务 uv 当天登陆用户数
sadd uv:20230516 001 002 003 002
scard uv:20230516

5、对key的操作

下表给出了与 Redis 键相关的基本命令:

在这里插入图片描述

1、删除
del user1
2、查看所有的key  
keys *     生产环境下,别用
3、存在key
exists user1
4、存活时间
expire liming 5
5、剩余存活时间   登陆续期
pttl user1
6随机获取 key
randomkey

6、对ZSet的操作-重要

1、Redis有序集合和集合一样也是string类型元素的集合,且不允许重复的成员
2、它用来保存需要排序的数据,例如排行榜,一个班的语文成绩,一个公司的员工工资,一个论坛的帖子等
3、有序集合中,每个元素都带有score(权重),以此来对元素进行排序
4、它有三个元素:keymemberscore。以语文成绩为例,key是考试名称(期中考试、期末考试等),member是学生名字,score是成绩

在这里插入图片描述

1、添加
zadd pv 100 page1.html 200 page2.html 300 page3.html
2、查看
zcard pv
3、查询指定权重范围的成员数
ZCOUNT pv 150 500
4、增加权重
ZINCRBY pv 1 page1.html
5、交集
ZADD pv_zset1 10 page1.html 20  page2.html
ZADD pv_zset2 5 page1.html 10  page2.html
ZINTERSTORE pv_zset_result 2 pv_zset1  pv_zset2
6、成员的分数值
ZSCORE pv_zset page3.html   
7、获取下标范围内的成员。 排序,默认权重由低到高
ZRANGE pv 0 -1
8、获取由高到低的几个成员(reverse)使用最多的
效率很高,因为本身zset就是排好序的。
ZREVRANGE key start stop

7、对位图BitMaps的操作

1、计算机最小的存储单位是位bit,Bitmaps是针对位的操作的,相较于String、Hash、Set等存储方式更加节省空间
2、Bitmaps不是一种数据结构,操作是基于String结构的,一个String最大可以存储512M,那么一个Bitmaps则可以设置2^32个位
3、Bitmaps单独提供了一套命令,所以在Redis中使用Bitmaps和使用字符串的方法不太相同。可以把Bitmaps想象成一个以位为单位的数组,数组的每个单元只能存储0和1,数组的下标在Bitmaps中叫做偏移量offset
在这里插入图片描述

7.1 设置值

SETBIT key offset value  

注意:setbit命令设置的vlaue只能是0或1两个值

  • 设置键的第offset个位的值(从0算起),假设现在有20个用户,uid=0,5,11,15,19的用户对网站进行了访问, 那么当前Bitmaps初始化结果如图所示

在这里插入图片描述

  • 具体操作过程如下, unique:users:2022-04-05代表2022-04-05这天的独立访问用户的Bitmaps
 setbit unique:users:2022-04-05 0  1  setbit unique:users:2022-04-05 5 1  setbit unique:users:2022-04-05 11 1  setbit unique:users:2022-04-05 15 1  setbit unique:users:2022-04-05 19 1

7.2 获取值

GETBIT key offset

获取键的第offset位的值(从0开始算),例:下面操作获取id=8的用户是否在2022-04-05这天访问过, 返回0说明没有访问过

getbit unique:users:2022-04-05 8

在这里插入图片描述

7.3 获取Bitmaps指定范围值为1的个数

BITCOUNT key [start end] 

例:下面操作计算2022-04-05这天的独立访问用户数量:

bitcount unique:users:2022-04-05  

在这里插入图片描述

7.4 Bitmaps间的运算

BITOP operation destkey key [key, …] 

bitop是一个复合操作, 它可以做多个Bitmaps的and(交集) or(并集)not(非)xor(异或) 操作并将结果保存在destkey

  • 需求:假设2022-04-04访问网站的userid=1, 2, 5, 9, 如图下所示:
setbit unique:users:2022-04-04 1 1  
setbit  unique:users:2022-04-04 2 1  
setbit  unique:users:2022-04-04 5 1  
setbit  unique:users:2022-04-04 9 1  
  • 例1:下面操作计算出2022-04-04和2022-04-05两天都访问过网站的用户数量
bitop and unique:users:and:2022-04-04_05  unique:users:2022-04-04 unique:users:2022-04-05  
bitcount unique:users:and:2022-04-04_05

在这里插入图片描述

  • 例2:如果想算出2022-04-04和2022-04-05任意一天都访问过网站的用户数量(例如月活跃就是类似这种) , 可以使用or求并集
 bitop or unique:users:or:2022-04-04_05  unique:users:2022-04-04 unique:users:2022-04-05  bitcount unique:users:or:2022-04-04_05

在这里插入图片描述


http://www.ppmy.cn/news/71201.html

相关文章

mkv转mp4格式怎么转,5种便捷工具盘点

mkv转mp4格式怎么转?因为当我们下载视频时,通常无法选择格式,这可能会导致下载的视频无法打开。如果下载的是MKV格式,它可以容纳多个音频、视频和字幕流。然而,并非所有播放器都支持MKV格式的视频文件。尽管MKV是常见的…

Facebook 广告效果越来越差,怎么办?

在如今的数字营销领域中,Facebook作为独立站卖家首选的推广引流平台,具备了许多优势。 一方面,Facebook拥有庞大的用户数量,是全球最大的社交媒体平台之一。另一方面,Facebook的广告算法可以将广告推送给更加精准的受…

Appuploader 常见错误及解决方法

转载:Appuploader 常见错误及解决方法 问题解决秘籍 遇到问题,第一个请登录苹果开发者官网 检查一遍账号是否有权限,是否被停用,是否过期,是否有协议需要同意,并且在右上角切换账号后检查所有关联的账号是否…

图神经网络+强化学习

访问【WRITE-BUG数字空间】_[内附完整源码和文档] 车辆路径规划问题(VRP)是运筹优化领域最经典的优化问题之一。在此问题中,有若干个客户对某种货物有一定量的需求,车辆可以从仓库取货之后配送到客户手中。客户点与仓库点组成了一…

C++:使用位图处理海量数据

目录 一. 什么是位图 1.1 海量数据处理问题 1.2 位图的概念 二. 位图的实现 2.1 成员变量及成员函数 2.2 成员函数的实现 2.3 位图模拟实现完整代码 三. 关于位图处理海量数据的几个面试题 一. 什么是位图 1.1 海量数据处理问题 问题:假设有30亿个不重复的…

PLE - 多任务模型(腾讯)

文章目录 1、动机2、模型结构3、代码实现细节:Progressive Layered Extraction (PLE): A Novel Multi-Task Learning (MTL) Model for Personalized Recommendations论文发表在 RecSys-2020, best paper。ple主要缓解了mtl里两大问题:负迁移和跷跷板现象,相比其他mtl model…

matlab代码复现:室内定位、无线传感器网路定位、估计优化滤波等探讨及技术支持

室内外定位导航、无线传感器网路定位、估计优化滤波等探讨及技术支持 博主主要擅长以下几个方面,探讨、技术支持、代码复现等问题欢迎联系,也可以站内私信 weixin: ZB823618313(备注来意) 1. 估计\滤波\融合 1 各种参数估计算法…

CVE-2023-32233 Linux kernel

0x01 漏洞介绍 近日,研究人员发现了Linux内核的NetFilter框架中的新漏洞(CVE-2023-32233)。该漏洞可被本地用户用于将权限提升为root,并完全控制系统。问题的根源在于tfilter nf_tables是如何处理批处理请求的,经过身…