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

特性

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

适合存储对象和映射表。

相关推荐
西瓜味儿的小志1 小时前
Mysql的MVCC机制分析
数据库·mysql·面试
鸿永与1 小时前
『SQLite』SELECT语句查询数据
数据库·sqlite
鸿永与1 小时前
『SQLite』详解运算符
数据库·sqlite·内存数据库
等一场春雨2 小时前
linux wsl配置 redis远程连接
数据库·redis·缓存
唐梓航-求职中2 小时前
缓存-Redis-缓存更新策略-主动更新策略-Cache Aside Pattern,先删除缓存,还是先更新数据库?
数据库·redis·缓存
忧郁的蛋~2 小时前
C#数据库操作系列---SqlSugar完结篇
数据库·c#·asp.net
m0_548514772 小时前
大数据-240 离线数仓 - 广告业务 测试 ADS层数据加载 DataX数据导出到 MySQL
大数据·数据库·mysql
明明跟你说过3 小时前
MySQL 数据表与索引设计艺术:打造高效数据存取架构
数据库·mysql·database·big data
迎风追日4 小时前
时序数据库对比
数据库·时序数据库
TiDB_PingCAP4 小时前
Rakuten 乐天积分系统从 Cassandra 到 TiDB 的选型与实战
数据库·mysql·tidb