Redis中五种常用数据类型及其相关操作笔记

本文详细介绍了Redis中的五种数据类型:键、字符串、列表、集合和哈希,包括各自的特性和常用操作。例如,键的操作有查看、删除、设置过期时间等;字符串支持设置、获取、追加等操作;列表可以进行插入、获取和弹出元素;集合提供添加、检查成员等方法;哈希允许存储键值对并进行更新、获取等操作。这些数据类型和操作使得Redis成为高性能的键值存储系统。
摘要由CSDN通过智能技术生成

Redis中五种常用数据类型及其相关操作笔记

1 Redis键(key)

(1)Keys * 查看当前库所有key

(2)exists [key] 判断key是否存在,返回1存在,返回0不存在

(3)type [key] 查看key是什么类型

(4)del [key] 删除指定的key数据

(5)Unlink [key] 根据value选择非阻塞删除:仅将keys从keyspace元数据中删除,真正的删除会在后续异步操作

(6)expire [key] [time]:为给定的key设定过期时间,以秒为单位

(7)ttl [key]查看还有多少秒过期,-1表示永不过期,-2表示已过期

2 字符串String

​ Redis的String类型是最基本的数据类型,一个字符串value值最多可以使512M,同时String是二进制安全的,可以包含任何数据,比如jpg图片或者序列化的对象

操作:

(1)set [key] [value]:设置k-v 如 set k1 name

image-20211011144731620

(2)get [key]:获取该key对应的value

image-20211011144813377

(3)append [key] [value]:向key对应的value后追加值,同时返回长度,若key不存在,则新建

image-20211011144942354

(4)strlen [key]:获取长度

image-20211011145103816

(5)setnx [key] [value]:只有key不存在时,才设置key的值

key1存在,所以无法设置成功

image-20211011145412074

key2不存在,成功设置

image-20211011145433099

(6) incr [key]:将key中存储的数字值增加1,只能对数字操作

image-20211011145645507

当key不存在时,新建并值为1

image-20211011145719568

(7)decr [key]:将key中存储的数字值减1

image-20211011145743593

如果key不存在,新建并值为-1

image-20211011145820299

(8)incrby [key] [步长]:将key中存储的数字值增加,自定义步长,如果步长为20则值增加20

(9)decrby [key] [步长]:将key中存储的数字值减少,自定义步长,如果步长为20则值减少20

3 列表List

​ List是单键多值的数据类型,按照插入顺序排序。可以添加一个元素到列表的头部或者尾部。其底层是双向链表。

操作:

(1)lpush/rpush [key] [value1] [value2]…:从左边/右边插入一个或多个值

image-20211011195152155

(2)Irange [key] [start] [stop]:按照索引下表获得元素(从左到右),如果输入的start和stop分别是0和-1则表示取所有值

image-20211011195419315

(3)lpop/rpop [key]:从左边/右边弹出一个值,当值全部弹出,键自动删除

image-20211011195517596

(4)rpoplpush [key1] [key2]:从key1列表右边弹出一个值,插入到key2列表的左边

image-20211011195733955

(5)lindex [key] [index]:按照索引下表获取指定元素(从左到右)

image-20211011195804261

(6)linsert [key] before [value] [newvalue]:在[value]前面插入[newvalue]

image-20211011200008482

(7)lrem [key] [n] [value]:从左边删除n个value

image-20211011200033824

(8)lset [key] [index] [value]:将列表key下标为index的值替换成value

image-20211011200105459

4 Redis集合Set

​ Redis中的集合也是类似于列表的功能,但是set中不允许存在重复元素,其实string类型的无需集合,底层为哈希表,添加、删除、查找的复杂度都是O(1)

操作:

(1)sadd [key] [value1] [value2]:将一个或多个元素加入到key中,自动排重

image-20211011200737962

(2)smembers [key]:查看集合中所有值

image-20211011200753596

(3)sismember [key] [value]:判断集合key是否含有给定value值,有返回1,没有返回0

image-20211011200835616

(4)scard [key]:返回该集合的元素个数

image-20211011200859899

(5)srem [key] [value1] [value2]:删除集合中的某个元素

image-20211011200914762

(6)spop [key]:随机从集合中弹出一个值

image-20211011201015679

(7)srandmember [key] [n]:随机从集合中取出n个值,不从集合中删除这些值

image-20211011201050295

(8)smove [source] [destination] [value]:把集合中的一个值移动到另一个集合

image-20211011201421546

(9)sinter [key1] [key2]: 返回两个集合的交集

image-20211011201558700

(10)sunion [key1] [key2]: 返回两个集合的并集

image-20211011201616779

(11)sdiff [key1] [key2]: 返回两个集合的差集(key1中的,不包含key2中的)

image-20211011201632139

5 Redis哈希Hash

​ Redis中的hash是一个string类型的field和value的映射表,适合用于存储对象,类似java中的Map<String,Object>,其底层当field-value长度较短且个数较少时,会使用ziplist(压缩列表),否则使用hashtable(hash表)

操作:

(1)hset [key] [field] [value]:给key集合中的field键赋值value

image-20211011203250489

(2)hget [key] [field]:从key1集合filed取出value

image-20211011203318971

(3)hmset [key1] [field1] [value1] [field2] [value2]:批量设置hash的值(新版本hset也可以实现该功能)

image-20211011203401641

(4)hexists [key1] [field]:查看哈希表key中,给定域field是否存在

image-20211011203453362

(5)hkeys [key]:列出该hash集合的所有field

image-20211011203514471

(6)hvals [key]:列出该hash集合的所有value

image-20211011203526640

(7)hincrby [key] [field] [increment]:为哈希表key中的域field的值加上增量

image-20211011203705135

(8)hsetnx [key] [field] [value]:将哈希表key中的域field的值设为value,当且仅当域field不存在时才能成功操作

image-20211011203811372

image-20211011204000283

6 Redis有序集合Zset

​ Zset也是一个没有重复元素的集合,与set的不同是Zset的每个成员都关联了一个评分,按照评分从低到高排序集合中的成员,评分可以重复。
其底层使用了两个数据结构:

​ (1)哈希表,作用是关联value和score,保障元素的唯一性

​ (2)跳跃表,作用是给value排序,根据score的饭味获取元素列表
操作:

(1)zadd [key] [score1] [value1] [score2] [value2]:将一个或多个member元素及其值加入到key中

image-20211011204731380

(2)zrange [key] [start] [end] [WITHSCORES]:返回下表在start和end之间的元素,如果带上WITHSCORES,可以将分数一起返回,如果start和end分别是0,-1,则返回全部元素

image-20211011204831112

image-20211011204852149

(3)zrangebyscore [key] [min] [max] [withscores] [limit offset count]:返回所有score值介于min和max之间(闭区间)的成员,按score从小到大排列,limit offset count是分页

image-20211011204952952

image-20211011205014351

(4)zrevrangebyscore [key] [max] [min] [withscores] [limit offset count]:返回所有score值介于min和max之间(闭区间)的成员,按score从大到小排列

image-20211011205143520

(5)zincrby [key] [increment] [value]:为元素的score加上增量

image-20211011205432322

(6)zrem [key] [value]:删除指定值的元素

image-20211011205458082(7)zcount [key] [min] [max]:统计区间内的元素个数(闭区间)

image-20211011205522605

(8)zrank [key] [value]:返回指定值在集合中的排名,从0开始

image-20211011205604287

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值