Redis 常用数据结构及操作

Redis 支持多种数据类型,这些数据类型允许你存储和操作不同类型的数据。以下是 Redis 支持的主要数据类型

  1. 字符串(Strings):最基本的数据类型,可以存储文本或二进制数据。在 Redis 中,字符串的最大长度为 512 MB。
  2. 哈希(Hashes):用于存储键值对的散列集合。每个哈希可以包含多个字段和对应的值,适合存储对象或关联数据。
  3. 列表(Lists):有序的字符串列表,允许在列表的两端进行元素的插入和删除操作。可以用来实现队列或栈等数据结构。
  4. 集合(Sets):无序的字符串集合,不允许重复元素。可以进行集合操作,如并集、交集和差集。
  5. 有序集合(Sorted Sets):类似于集合,但每个成员都关联一个分数(score),可以用于排序和排名。有序集合的元素是唯一的,但分数可以重复。
  6. 地理空间数据(GeoSpatial):Redis 3.2及以上版本支持的数据类型,用于存储地理位置和经纬度信息,并支持地理位置的查询。

1 字符串

# 设置字符串键 "username" 的值为 "Alice"
SET username "Alice"

# 获取字符串键 "username" 的值
GET username
# 输出: "Alice"

# 自增计数器 "visits"
INCR visits
# 输出: (当前计数值)

# 设置带有过期时间的缓存
SET user:1234 "{\"name\": \"Bob\", \"email\": \"[email protected]\"}" EX 3600
# 设置键 "user:1234" 的值为 JSON 格式的数据,并在 3600 秒后过期

# 获取缓存数据
GET user:1234
# 输出: "{\"name\": \"Bob\", \"email\": \"[email protected]\"}"

# 删除某一个键
# DEL key [key ...]
DEL username
# 设置某个键,让它在规定时间内消失
SETEX key seconds value

# 方式1 
SETEX name 20 "Alice"

# 方式2 
GETSET name "Alice"
EXPIRE name 20


哈希 hash 操作命令

  • HSET key field value 表示 : 将哈希表key中的字段field 的值设置为value
  • HGET key field 表示: 获取存储在哈希表中指定字段的值
  • HDEL key field 表示: 删除存储在哈希表中的指定字段
  • HKEYS key 表示: 获取哈希表中所有的字段
  • HVALS key 表示: 获取哈希表中所有的值
  • HGETALL key 表示: 获取在哈希表中指定key的所有字段和值
  • HEXISTS key field 表示: 检查哈希字段是否存在
  1. HSET:设置哈希字段的值。
HSET user:123 name "Alice"

这将在名为 “user:123” 的哈希中设置字段 “name” 的值为 “Alice”。
2. HGET:获取哈希字段的值。

HGET user:123 name

这将返回 “user:123” 哈希中字段 “name” 的值,即 “Alice”。

  1. HMSET:同时设置多个哈希字段及其值。
HMSET user:123 name "Alice" age 30 email "[email protected]"

这将在 “user:123” 哈希中设置字段 “name” 的值为 “Alice”,字段 “age” 的值为 30,字段 “email” 的值为 “[email protected]”。

  1. HDEL:删除一个或多个哈希字段。
HDEL user:123 email

这将从 “user:123” 哈希中删除字段 “email” 及其对应的值.

  1. HINCRBY:对哈希字段的值执行增量操作。
HINCRBY user:123 age 5

这将将 “user:123” 哈希中字段 “age” 的值增加 5。

  1. HLEN:获取哈希中字段的数量。
HLEN user:123

列表list的操作命令

  • LPUSH key value1 [value2] 将一个或者多个值插入到列表的头部
  • RPUSH key value1 将一个或多个元素插入到列表的尾部
  • LRANGE key start stop 获取列表中指定范围内的元素
  • LLEN key 获取列表的长度(即列表中元素的数量)
  • RPOP key 移除并获取列表的最后一个元素
  • LPOP key 移除并返回列表的头部元素
  • LINDEX key index 获取列表中指定索引位置的元素
  • LINSERT key BEFORE|AFTER pivot value : 在列表中指定元素 pivot 的前面或后面插入新元素。
  • LSET key index element 设置列表中指定索引位置的元素的值

LTRIM key start stop: 保留列表中指定范围内的元素,其它元素将被删除。
BLPOP key [key …] timeout: 阻塞式地移除并返回多个列表的头部元素,如果列表为空,则在指定的超时时间内等待。
BRPOP key [key …] timeout: 阻塞式地移除并返回多个列表的尾部元素,如果列表为空,则在指定的超时时间内等待。
RPOPLPUSH source destination: 移除 source 列表的尾部元素,并将它添加到 destination列表的头部。
LPOS key element [RANK rank] [COUNT num]: 获取列表中指定元素的索引位置。可选的参数 RANK 可以用来指定从哪个索引开始搜索,COUNT 可以用来指定要返回的匹配元素的数量。

LPUSH root_name zhs
LPUSH root_name wb
LPUSH root_name mhf

查看范围内元素

127.0.0.1:6379> LRANGE root_name 0 2
1) "mhf"
2) "wb"
3) "zhs"

集合set 操作

  • SADD key member 将一个或多个成员添加到集合中。
 sadd myset a b c d
  • SMEMBERS key 返回集合中的所有成员。
 smembers myset
  • SCARD key:
    返回集合中的成员数量,即集合的基数。
scard myset
  • SINTER key1 [key2] 返回给定多个集合的交集,即返回同时存在于所有集合的成员
127.0.0.1:6379> sadd myset2 a f c 
(integer) 3
127.0.0.1:6379> sinter myset myset2
1) "a"
2) "c"
  • SUNION key1 [ key2] 返回给定多个集合的并集,即返回所有集合中的不重复的成员
127.0.0.1:6379> sunion myset myset2
1) "c"
2) "d"
3) "b"
4) "f"
5) "a"
  • SDIFF key1 [key1] 返回给定多个集合的差集,即返回存在于第一个集合但不存在于其他集合的成员。
127.0.0.1:6379> sdiff myset myset2
1) "b"
2) "d"
  • SREM key1 [key2]从集合中移除一个或多个成员。
127.0.0.1:6379> SREM myset a b
(integer) 2

有序集合 sorted set 操作命令

Redis sorted set 有序集合是 String 类型元素的集合,并且不允许重复的成员.每个元素都会关联一个double 类型的分数(score) .redis 正是通过这种分数来为集合中的元素从小到大排序.有序集合的成员是唯一的,但是分数是可以重复的.

  1. ZADD key score member [score member …]:将一个或多个成员及其对应的分数添加到有序集合中。
127.0.0.1:6379> zadd scores 100 "Alice" 85 "wb" 110 "zhs" 140 "cx"
(integer) 4
  1. ZCARD key 获取有序集合的成员数量
ZCARD scores
  1. 获取指定成员的分数: ZSCORE key member
ZSCORE scores "Charlie"
输出
127.0.0.1:6379> ZSCORE scores "zhs"
"110"
  1. ZINCRBY key increment member 增加指定成员的分数
 zincrby scores 10 "zhs" 
"120"
  1. ZREVRANK key member 获取指定成员在有序集合中的排名(按分数从高到低排序):
127.0.0.1:6379> zrevrank scores "zhs"
(integer) 1

6.从有序集合中移除成员: ZREM key member

127.0.0.1:6379> zrem score "wb"
(integer) 0

Redis 常用命令

  • KEYS pattern 查看所有的符合条件的
  • EXISTS key 检查给定key 是否存在
  • TYPE key 返回key 所存储的类型
  • DEL key 删除key

猜你喜欢

转载自blog.csdn.net/qq_41661809/article/details/131825174