首页 > 数据库 >Redis-2-基本数据类型

Redis-2-基本数据类型

时间:2024-06-05 17:36:27浏览次数:34  
标签:基本 返回 存储 数据类型 成员 Redis 指定 列表 移除

1.Redis基础命令

命令 描述 示例
KEYS 查看符合模板的所有key KEYS pattern
DEL 删除一个指定的key DEL key
EXISTS 判断key是否存在 EXISTS key
EXPIRE 给一个key设置有效期,有效期到期时该key会被自动删除 EXPIRE key seconds
TTL 查看一个KEY的剩余有效期 TTL key

2.Redis基本数据类型

要查询Redis具体的命令,可以在官网进行的这里查询

注意有个筛选列表,比如看String的可以这样。

image-20240602203713671

下面的是我拿这些命令做的机翻,我只是整理在这里。

含义拿不准的,可以自己到官网看下原文。

然后,我们前文提到了5种基本类型的底层实现。

数据类型 使用的数据结构 说明
String SDS 简单动态字符串,预分配空间,O(1) 复杂度的长度查询
List LinkedList、ZipList 传统链表结构,适合频繁插入和删除;紧凑列表,适合少量小数据
Hash HashTable、ZipList 高效的键值对存储和查找,使用链地址法解决冲突
Set IntSet、HashTable 紧凑的数据结构,只存储整数,节省内存,适合快速查找
Sorted Set SkipList、ZipList 分层索引结构,平均 O(log N) 复杂度,适合快速插入、删除和查找

2.1 String

SDS

1.命令

命令 描述
APPEND 将值追加到一个键后面。
BITCOUNT 统计字符串中被设置为 1 的位的数量。
BITFIELD 在字符串上执行任意位域整数操作。
BITFIELD_RO 在字符串上执行任意只读位域整数操作。
BITOP 在字符串之间执行按位操作。
BITPOS 找到字符串中第一个设置为 1 或 0 的位。
DECR 将键存储的数字减一。
DECRBY 将键存储的数字减少指定的值。
GET 获取键的值。
GETBIT 返回指定偏移量的位值。
GETDEL 获取键的值并删除键。
GETEX 获取键的值并可选地设置其过期时间。
GETRANGE 获取存储在键中的字符串的子字符串。
GETSET 设置键的字符串值并返回其旧值。
INCR 将键存储的数字加一。
INCRBY 将键存储的数字增加指定的值。
INCRBYFLOAT 将键存储的数字增加指定的浮点数。
MGET 获取所有给定键的值。
MSET 将多个键设置为多个值。
MSETNX 将多个键设置为多个值,仅当所有键都不存在时。
PSETEX 设置键的值和到期时间(以毫秒为单位)。
SET 设置键的字符串值。
SETBIT 设置或清除指定偏移量的位。
SETEX 设置键的值和到期时间。
SETNX 仅当键不存在时设置键的值。
SETRANGE 覆盖键中存储的字符串的一部分。
STRLEN 获取存储在键中的值的长度。

2.场景

应用场景:缓存对象、计数器、会话管理。

示例:存储用户会话信息、网页访问计数。

3.常见问题

string 和 map存储对象有什么区别

在 Redis 中,使用 String 存储对象时,将整个对象序列化为一个字符串,适合存储简单对象,读取和写入速度快,但更新某个字段需要重新序列化整个对象。

而使用 Hash 存储对象时,将对象的每个字段作为键值对存储,方便部分字段的操作和更新,适合对象字段较多的情况,但复杂度和性能开销比 String 高。

选择 String 或 Hash 取决于对象的复杂度和操作需求。

2.2 List

LinkedList、ZipList

1.命令

命令 描述
BLPOP 移除并返回列表的第一个元素,若列表为空则阻塞直到有元素可弹出。
BRPOP 移除并返回列表的最后一个元素,若列表为空则阻塞直到有元素可弹出。
BRPOPLPUSH 从一个列表中弹出一个元素并将其推入到另一个列表中,若列表为空则阻塞。
LINDEX 获取列表中指定索引的元素。
LINSERT 在列表的指定位置插入元素。
LLEN 获取列表的长度。
LMOVE 从一个列表中移除元素并将其添加到另一个列表中。
LMPOP 从多个列表中弹出第一个元素。
LPOP 移除并返回列表的第一个元素。
LPOS 返回列表中第一次出现指定元素的位置。
LPUSH 将一个或多个值插入到列表头部。
LPUSHX 将一个值插入到已存在的列表头部。
LRANGE 获取列表中指定范围的元素。
LREM 从列表中移除指定数量的元素。
LSET 设置列表中指定位置的元素值。
LTRIM 修剪列表,使其只保留指定范围内的元素。
RPOP 移除并返回列表的最后一个元素。
RPOPLPUSH 移除列表的最后一个元素并将其添加到另一个列表的头部。
RPUSH 将一个或多个值插入到列表尾部。
RPUSHX 将一个值插入到已存在的列表尾部。

2.场景

应用场景:消息队列、任务队列。

示例:存储评论列表、最新活动记录。

2.3 Hash

1.命令

命令 描述
HDEL 删除一个或多个哈希字段。
HEXISTS 检查哈希字段是否存在。
HGET 获取哈希字段的值。
HGETALL 获取哈希中所有字段和值。
HINCRBY 为哈希字段的整数值加上指定增量。
HINCRBYFLOAT 为哈希字段的浮点数值加上指定增量。
HKEYS 获取哈希中的所有字段。
HLEN 获取哈希中的字段数量。
HMGET 获取一个或多个哈希字段的值。
HMSET 设置多个哈希字段的值。
HRANDFIELD 随机获取哈希中的一个或多个字段。
HSCAN 迭代哈希中的字段和值。
HSET 设置哈希字段的值。
HSETNX 仅当字段不存在时,设置哈希字段的值。
HSTRLEN 获取哈希字段值的字符串长度。
HVALS 获取哈希中的所有值。

2.场景

应用场景:存储对象、用户信息。

示例:存储用户配置、会话数据。

2.4 Set

1.命令

命令 描述
SADD 向集合添加一个或多个成员。
SCARD 获取集合的成员数量。
SDIFF 返回一个集合与其他集合之间的差集。
SDIFFSTORE 将一个集合与其他集合之间的差集存储在一个新的集合中。
SINTER 返回一个集合与其他集合的交集。
SINTERSTORE 将一个集合与其他集合的交集存储在一个新的集合中。
SISMEMBER 判断成员元素是否是集合的成员。
SMEMBERS 返回集合中的所有成员。
SMISMEMBER 返回一个或多个成员是否在集合中。
SMOVE 将成员从一个集合移动到另一个集合。
SPOP 移除并返回集合中的一个或多个随机成员。
SRANDMEMBER 返回集合中的一个或多个随机成员。
SREM 移除集合中的一个或多个成员。
SSCAN 迭代集合中的元素。
SUNION 返回所有给定集合的并集。
SUNIONSTORE 将所有给定集合的并集存储在一个新的集合中。

2.场景

应用场景:标签系统、好友列表。

示例:管理用户兴趣标签、推荐系统。

2.5 Sorted Set

1.命令

命令 描述
BZPOPMAX 移除并返回一个或多个有序集中的分数最高的成员,若有序集为空则阻塞。
BZPOPMIN 移除并返回一个或多个有序集中的分数最低的成员,若有序集为空则阻塞。
ZADD 向有序集添加一个或多个成员,或更新已存在成员的分数。
ZCARD 获取有序集的成员数量。
ZCOUNT 计算指定分数区间内成员数量。
ZDIFF 返回一个有序集与其他有序集之间的差集。
ZDIFFSTORE 将一个有序集与其他有序集之间的差集存储在一个新的有序集中。
ZINCRBY 为有序集的成员增加指定分数。
ZINTER 返回一个或多个有序集的交集。
ZINTERSTORE 将一个或多个有序集的交集存储在一个新的有序集中。
ZLEXCOUNT 计算指定成员区间内的成员数量。
ZMSCORE 获取一个或多个成员的分数。
ZPOPMAX 移除并返回有序集中分数最高的成员。
ZPOPMIN 移除并返回有序集中分数最低的成员。
ZRANDMEMBER 返回一个或多个随机成员及其分数。
ZRANGE 返回指定区间内的成员。
ZRANGEBYLEX 返回指定成员区间内的成员。
ZRANGEBYSCORE 返回指定分数区间内的成员。
ZRANGESTORE 将指定区间内的成员存储在一个新的有序集中。
ZRANK 返回成员在有序集中的排名(按分数升序)。
ZREM 移除一个或多个成员。
ZREMRANGEBYLEX 移除指定成员区间内的成员。
ZREMRANGEBYRANK 移除指定排名区间内的成员。
ZREMRANGEBYSCORE 移除指定分数区间内的成员。
ZREVRANGE 返回指定区间内的成员(按分数降序)。
ZREVRANGEBYLEX 返回指定成员区间内的成员(按字典序逆序)。
ZREVRANGEBYSCORE 返回指定分数区间内的成员(按分数降序)。
ZREVRANK 返回成员在有序集中的排名(按分数降序)。
ZSCAN 迭代有序集中的元素及其分数。
ZSCORE 返回成员的分数。
ZUNION 返回多个有序集的并集。
ZUNIONSTORE 将多个有序集的并集存储在一个新的有序集中。

2.场景

应用场景:排行榜、延迟队列。

示例:游戏排行榜、定时任务。

标签:基本,返回,存储,数据类型,成员,Redis,指定,列表,移除
From: https://www.cnblogs.com/yang37/p/18233444

相关文章

  • Redis-1-底层数据结构、为什么快
    参考文章:Redis常见面试题总结(上)redisIO多路复用模型详解JavaIO模型详解JavaNIO浅析深入理解Redis之简单动态字符串Redis中压缩列表的优缺点和更加高效的原因Redis中ziplist压缩列表的实现redis数据结构解析——跳跃表为什么读取连续内存没有比不连续的效率更高?1.R......
  • Redis-3-过期时间淘汰策略与内存淘汰策略
    目录1.Redis过期时间淘汰策略1.1惰性删除1.2定期删除1.3主动扫描2.Redis内存淘汰策略2.1最大内存配置2.2LRU最近最少使用2.2.1传统LRU2.2.2Redis中的LRU2.2.3LRU的缺点2.3访问频率最低2.3.1传统LFU2.3.2Redis的LFU2.3.2.1时间衰减函数2.3.2.2热度值函数2.3.2.3总结2......
  • Redis-5-高可用
    Redis高可用高可用性(HighAvailability,HA)主要是为了确保系统在面对故障、负载变化等情况下仍能持续提供服务。HA场景下,主要是解决这些问题。问题问题描述解决方案单点故障如果只有一个Redis实例,当它发生故障时,整个系统将无法访问缓存数据,导致服务中断。通过主从......
  • Redis-4-持久化
    Redis持久化1.1为什么Redis是基于内存的,不保存的话,应用停止了后数据就不在了。持久化的诉求,主要是解决以下问题:防止数据丢失Redis是一个内存数据库,数据主要存储在内存中。如果没有持久化机制,一旦服务器宕机或重启,内存中的所有数据都会丢失。通过持久化,Redis可以在磁盘上保......
  • Redis 常用的数据结构简介与实例测试【Redis 系列二】
    〇、都有哪些数据结构?Redis提供了较为丰富的数据类型,常见的有五种:String(字符串),Hash(哈希),List(列表),Set(集合)、Zset(有序集合)。随着Redis版本的更新,后面又支持了四种数据类型:BitMap(2.2版新增)、HyperLogLog(2.8版新增)、GEO(3.2版新增)、Stream(5.0版新增)。本文将对以上数据类型,通......
  • Redis——Java的客户端
    Java的客户端在Redis官网中提供了各种语言的客户端,地址:https://redis.io/clientsjedisjedis的官网地址:https://github.com/redis/jedis1.引入依赖<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>5.0......
  • 面向对象设计方法Review-02.抽象数据类型
    结构化开发方法基本思想:自顶向下,逐步求精,过程抽象,模块化技术概念:结构化程序设计:按照一定的原则与原理,组织编写正确且易读的程序的软件技术。结构化分析设计:数据流图、数据字典、模块结构图。优势:合理性(管理复杂性的有效手段:分解,抽象,层次)、正确性(依据规约,完成任务)程序&......
  • 基本数据类型(整形,浮点型,字符串)
    数据类型(8)int123,456float2.3strstrs='ssssss'#大小写#转小写print(strs.lower())#转大写print(strs.upper())#首字母大写print(strs.title())#大小写互转字符串替换print(strs.replace('world','Tom'))字符串拆分print(strs.split('......
  • 论程序员的基本素养
    一:专业精神程序员应当追求数据的严谨性,对于后端程序员来说,数据是不允许出错的,接口是一定要拥有对自己的说明文档的,接口的复用性一定要高,冗余代码一定要减少对于前端,要追求对页面的还原程度,要追求页面的性能,要准备一份用户使用说明,一定不要认为用户什么都可以按照你设想的操作......
  • 用Redisson的延迟队列RDelayedQueue处理延迟任务或者定时任务
    什么是RedissonRedisson在基于NIO的Netty框架上,充分的利用了Redis键值数据库提供的一系列优势,在Java实用工具包中常用接口的基础上,为使用者提供了一系列具有分布式特性的常用工具类。什么是RDelayedQueue获取RDelayedQueue:public<V>RDelayedQueue<V>getDelayedQueue(R......