Redis 数据库

1.字符串(String)

用途

字符串是 Redis 最基本的数据类型,可以存储任何形式的文本,

如JSON、XML或简单的字符串值。

它常用于缓存用户会话、计数器、缓存数据库查询结果等。

操作

字符串类型支持设置(SET)、获取(GET)、删除(DEL)、自增(INCR)、自减(DECR)、追加(APPEND)等操作:

  • 设置值:SET key value

  • 获取值:GET key

  • 设置过期时间:EXPIRE key timeout

  • 删除键:DEL key

  • 批量设置值:MSET key1 value1 key2 value2 ...

  • 批量获取值:MGET key1 key2 ...

  • 自增/自减:INCR key / DECR key 或 INCRBY key increment / DECRBY key decrement

特性

字符串类型是动态字符串,可以修改内容,并且最大长度为512MB。

2.列表(List)

用途

列表是一个简单的字符串列表,按照插入顺序排序。

列表常用于实现消息队列或执行原子推入或弹出操作。

操作

列表类型支持从两端推入元素(LPUSHRPUSH)、弹出元素(LPOPRPOP)、获取列表元素(LRANGE)、获取列表长度(LLEN)等操作。

  • 在头部插入元素:LPUSH key value1 value2 ...

  • 在尾部插入元素:RPUSH key value1 value2 ...

  • 获取列表指定范围内的元素:LRANGE key start stop

  • 移除并获取列表头部元素:LPOP key

  • 移除并获取列表尾部元素:RPOP key

  • 获取列表长度:LLEN key

特性

列表是双向链表结构,支持从头部或尾部进行O(1)时间复杂度的弹出和推入操作。

3.集合(Set)

用途

集合是一个无序集合,自动处理重复元素。

集合常用于实现交集、并集、差集等操作,例如,用于标签系统、用户关注列表等。

操作

集合类型支持添加元素(SADD)、移除元素(SREM)、获取集合中的元素(SMEMBERS)、检查元素是否存在(SISMEMBER)等操作。

  • 添加成员:SADD key member1 member2 ...

  • 获取集合中的所有成员:SMEMBERS key

  • 判断成员是否存在于集合中:SISMEMBER key member

  • 删除集合中的一个或多个成员:SREM key member1 member2 ...

  • 返回给定所有集合的交集:SINTER key1 key2 ...

  • 返回所有给定集合的并集:SUNION key1 key2 ...

javascript 复制代码
Redis:0>sadd empno 8000
"1"
Redis:0>sadd empno 8001
"1"
Redis:0>sadd empno 8002
"1"
Redis:0>sadd empno 8003 8004 8005
"3"
Redis:0>smembers empno
 1)  "8000"
 2)  "8001"
 3)  "8002"
 4)  "8003"
 5)  "8004"
 6)  "8005"
Redis:0>sadd empno 8001
"0"
Redis:0>smembers empno
 1)  "8000"
 2)  "8001"
 3)  "8002"
 4)  "8003"
 5)  "8004"
 6)  "8005"
Redis:0>scard empno
"6"
Redis:0>sismembers empno 8000
"ERR unknown command 'sismembers'"
Redis:0>sismember empno 8000
"1"
Redis:0>sismember empno 8001
"1"
Redis:0>srem empno 8000 80001
"1"
Redis:0>smembers empno
 1)  "8001"
 2)  "8002"
 3)  "8003"
 4)  "8004"
 5)  "8005"
Redis:0>spop empno
"8001"
Redis:0>smember empno
"ERR unknown command 'smember'"
Redis:0>smembers empno
 1)  "8002"
 2)  "8003"
 3)  "8004"
 4)  "8005"
Redis:0>srandmember empno 3
 1)  "8003"
 2)  "8002"
 3)  "8004"

特性

集合内部使用哈希表实现,因此添加、删除、查找元素的操作都是O(1)时间复杂度。

4.有序集合(Sorted Set)

用途

有序集合与集合类似,但它为每个元素关联了一个分数,使得元素能够按照分数进行排序。

有序集合常用于排行榜、带权重的消息队列等场景。

操作

有序集合类型支持添加元素(ZADD)、移除元素(ZREM)、根据分数或元素值获取元素排名(ZRANKZREVRANK)、获取指定分数范围内的元素(ZRANGEBYSCORE)等操作。

  • 添加成员及其分数:ZADD key score1 member1 score2 member2 ...

  • 通过索引区间返回有序集合中指定区间内的成员:ZRANGE key start stop WITHSCORES

  • 增加指定成员的分数:ZINCRBY key increment member

  • 获取有序集合中成员的分数:ZSCORE key member

  • 删除有序集合中的一个或多个成员:ZREM key member member ...

javascript 复制代码
Redis:0>select 1
"OK"
Redis:1>zadd keyword 0 "刘德华" 0 "成龙" 0 "张家辉"
"3"
Redis:1>zincrby keyword 1 "刘德华"
"1"
Redis:1>zincrby keyword 5 "成龙"
"5"
Redis:1>zincrby keyword 3 "张家辉"
"3"
Redis:1>zrevrange keyword 0 -1
 1)  "成龙"
 2)  "张家辉"
 3)  "刘德华"
Redis:1>zcard keyword
"3"
Redis:1>zincrby keyword 5000 "刘德华"
"5001"
Redis:1>zincrby keyword 500 "成龙"
"505"
Redis:1>zincrby keyword 3000 "张家辉"
"3003"
Redis:1>zdecrby keyword 100 "成龙"
"ERR unknown command 'zdecrby'"
Redis:1>zcount keyword 3000 5000
"1"
Redis:1>zcount keyword 5 10
"0"
Redis:1>zscore keyword "张家辉"
"3003"
Redis:1>zrangebyscore keyword 3000 5001
 1)  "张家辉"
 2)  "刘德华"
Redis:1>zrangebyscore keyword 3003 5001
 1)  "张家辉"
 2)  "刘德华"
Redis:1>zrangebyscore keyword 3000 (5001
 1)  "张家辉"
Redis:1>zrangebyscore keyword 3000 +inf
 1)  "张家辉"
 2)  "刘德华"
Redis:1>zrangebyscore keyword -inf 3000
 1)  "成龙"
Redis:1>zrevrangebyscore keyword 5001 3000
 1)  "刘德华"
 2)  "张家辉"
Redis:1>zrank keyword "张家辉"
"1"
Redis:1>zrank keywrod "刘德华"
null
Redis:1>zrank keyword "刘德华"
"2"
Redis:1>zrevrank keyword "刘德华"
"0"
Redis:1>zrem keyword "成龙","张家辉"
"2"
Redis:1>zmember keyword
"ERR unknown command 'zmember'"
Redis:1>zrevrange keyword 0 -1
 1)  "刘德华"
Redis:1>zremrangebyrank keyword 0 2
"1"
Redis:1>zrevrange keyword 0 -1

Redis:1>zremrangebyscore keyword -inf (5000
"0"

特性

有序集合使用哈希表和跳跃表(skip list)实现,确保了元素的快速插入、删除和有序访问。

5.哈希(Hash)

用途

哈希是一个键值对集合,可以存储对象。

哈希常用于存储、缓存和管理对象,例如用户信息、配置信息等。

操作

哈希类型支持设置字段(HSET)、获取字段(HGET)、删除字段(HDEL)、检查字段存在(HEXISTS)、获取所有字段和值(HGETALL)等操作。

  • 设置哈希表中的字段值:HSET key field value

  • 获取哈希表中指定字段的值:HGET key field

  • 删除哈希表中的指定字段:HDEL key field field ...

  • 获取哈希表中所有字段:HKEYS key

  • 获取哈希表中所有值:HVALS key

  • 获取哈希表中字段和值的数量:HLEN key

特性

哈希内部使用哈希表实现,字段名是字符串,字段值可以是字符串或数字,

适合存储对象和映射表。

相关推荐
努力努力再努力wz1 小时前
【Redis进阶系列】:从主从复制到 Sentinel,一文建立故障检测、Leader 选举与 Failover 的完整心智模型
数据库·redis·缓存
达梦数据1 小时前
DMDRS搭建部署简介与运行环境
数据库
Omics Pro2 小时前
1个月2轮融资!长寿虚拟细胞
数据库·人工智能·算法·机器学习·自然语言处理
zcn1262 小时前
row_number()函数与group by性能比较
数据库·sql优化改写
Wang's Blog2 小时前
Java 项目实战: 外卖平台-后台系统登录功能开发
java·服务器·redis
小K讲AI营销2 小时前
AI基础设施融资路径的中美比较:资本市场模式与政策金融模式
大数据·数据库·人工智能
净水深流2 小时前
中国冷链冷库行业数据分析:从规模扩张到技术驱动
大数据·数据库·人工智能·冷库冷链
李兆龙的博客3 小时前
从一到无穷大 #94:ClickHouse TimeSeries——时间线组织与 Prometheus 兼容性
数据库
冰暮流星3 小时前
事务的四个特性(ACID)详解
数据库
byte轻骑兵3 小时前
时序数据库选型全指南|大数据工业场景Apache IoTDB落地实操
大数据·数据库·人工智能·apache iotdb