应用
- String(字符串):
- 示例:
SET mykey "Hello"
- Java项目中的应用:存储会话信息、缓存数据、记录用户的登录状态等。
- List(列表):
- 示例:
RPUSH mylist "item1" "item2" "item3"
- Java项目中的应用:实现消息队列、日志处理、记录用户活动历史等。
- Set(集合):
- 示例:
SADD myset "member1" "member2" "member3"
- Java项目中的应用:存储唯一值,例如用户标签、用户的喜好等。
- Hash(哈希):
- 示例:
HSET myhash "field1" "value1"
- Java项目中的应用:存储对象属性,如用户对象、产品对象等。
- Sorted Set(有序集合):
- 示例:
ZADD myzset 1 "member1" 2 "member2" 3 "member3"
- Java项目中的应用:实现排行榜、计分系统、按分数范围查找等。
String类型
注意事项:
- 存储格式:虽然称为字符串,但 Redis 的 String 类型实际上可以包含文本或二进制数据。
- 内存管理:String 数据类型是内存密集型的。确保不要存储大型对象或文件,以免耗尽内存。
- 过期时间:可以为 String 设置过期时间,使其在一段时间后自动删除。
- 覆盖:使用
SET
命令时,如果键已经存在,它会被新值覆盖。 - 增量操作:Redis 提供了用于增量操作的命令,如
INCR
和DECR
,用于原子性地增加或减少存储的数值。 - 数据结构的多用途:虽然是 String 数据类型,但您可以存储 JSON、XML 或其他结构化数据,然后在应用程序中进行解析。
- 二进制数据:如果需要存储二进制数据,可以将其 Base64 编码后存储,并在应用程序中解码。
常用命令:
SET key value
:设置指定键的值。GET key
:获取指定键的值。SETEX key seconds value
:设置指定键的值,并指定过期时间(以秒为单位)。SETNX key value
:只有在该键不存在时才进行设置。 “SET if Not eXists” 的缩写。GETSET key value
:设置指定键的值,并返回旧值。MSET key value [key value ...]
:设置多个键值对。MGET key [key ...]
:获取多个键的值。INCR key
:将键存储的数字值加一。DECR key
:将键存储的数字值减一。INCRBY key increment
:将键存储的数字值按指定增量增加。DECRBY key decrement
:将键存储的数字值按指定减量减少。APPEND key value
:在键的值后追加指定值。STRLEN key
:获取键的值的长度。DEL key [key ...]
:删除指定键。EXPIRE key seconds
:为键设置过期时间(以秒为单位)。PERSIST key
:移除键的过期时间,使其永不过期。
List类型
注意事项:
- 有序性:List以插入顺序存储元素,因此维护了元素的顺序。这允许您实现队列、栈等数据结构。
- 重复元素:List可以包含重复元素。
- 变长:List可以在运行时添加或删除元素,没有固定的长度限制。
- 阻塞操作:Redis提供了用于从List中阻塞获取元素的命令,如
BLPOP
和BRPOP
。 - 范围操作:您可以使用范围操作命令,如
LRANGE
,来获取List中的一段元素。
常用命令:
LPUSH key value [value ...]
:将一个或多个值从左侧插入List。RPUSH key value [value ...]
:将一个或多个值从右侧插入List。LPOP key
:从左侧弹出并返回List中的元素。RPOP key
:从右侧弹出并返回List中的元素。LINDEX key index
:获取List中指定索引位置的元素。LLEN key
:获取List的长度(包含的元素数量)。LRANGE key start stop
:获取List中指定范围内的元素。LTRIM key start stop
:保留List中指定范围内的元素,其它元素将被删除。LSET key index value
:设置List中指定索引位置的元素值。LREM key count value
:删除List中指定值的元素。count
参数可以控制删除的数量。BLPOP key [key ...] timeout
:从左侧的List阻塞弹出元素。如果List为空,会等待元素出现或等待超时。BRPOP key [key ...] timeout
:从右侧的List阻塞弹出元素。如果List为空,会等待元素出现或等待超时。
Set类型
注意事项:
- 唯一性:Set中的成员是唯一的,不允许重复成员。
- 无序性:Set中的成员没有特定的顺序,与添加的顺序无关。
- 变长:Set可以在运行时添加或删除元素,没有固定的长度限制。
- 集合运算:Redis提供了集合运算,如并集、交集和差集,可以对多个Set进行操作。
常用命令:
SADD key member [member ...]
:将一个或多个成员元素添加到Set key中。SREM key member [member ...]
:从Set key中删除一个或多个成员。SMEMBERS key
:返回Set key中的所有成员。SISMEMBER key member
:检查成员是否存在于Set key中。SCARD key
:返回Set key的成员数量。SPOP key [count]
:随机地从Set key中弹出一个或多个成员。SRANDMEMBER key [count]
:随机地获取Set key中的一个或多个成员。SUNION key [key ...]
:计算多个Set的并集。SINTER key [key ...]
:计算多个Set的交集。SDIFF key [key ...]
:计算多个Set的差集。SUNIONSTORE destination key [key ...]
:将多个Set的并集存储到新的Set中。SINTERSTORE destination key [key ...]
:将多个Set的交集存储到新的Set中。SDIFFSTORE destination key [key ...]
:将多个Set的差集存储到新的Set中。
Sorted Set类型
Redis的Sorted Set(有序集合)是一种与Set类似的数据结构,不同之处在于它与每个成员关联了一个分数(score),这个分数用于对集合中的成员进行排序。以下是有关Redis Sorted Set数据类型的注意事项以及一些常用命令:
注意事项:
- 有序性:Sorted Set中的成员根据分数来排序,可以根据分数升序或降序排列元素。
- 唯一性:Sorted Set中的成员是唯一的,不允许重复成员。
- 分数类型:Sorted Set的分数可以是浮点数,允许多个成员拥有相同的分数。
- 变长:Sorted Set可以在运行时添加或删除元素,没有固定的长度限制。
常用命令:
ZADD key [NX|XX] [CH] [INCR] score member [score member ...]
:将一个或多个成员元素与分数score添加到有序集key中。NX
:仅在成员不存在时添加。XX
:仅在成员已存在时添加。CH
:修改已存在成员的分数。INCR
:以原子方式增加成员的分数。
ZRANGE key start stop [WITHSCORES]
:按分数范围获取有序集中的成员,可以包括成员的分数。ZREVRANGE key start stop [WITHSCORES]
:按分数范围的降序方式获取有序集中的成员。ZRANK key member
:获取有序集中成员的排名,从0开始。ZREVRANK key member
:获取有序集中成员的降序排名。ZSCORE key member
:获取有序集中成员的分数。ZCOUNT key min max
:获取有序集中分数在指定范围内的成员数量。ZREM key member [member ...]
:从有序集中删除一个或多个成员。ZINCRBY key increment member
:增加成员的分数。ZCARD key
:获取有序集的成员数量。ZRANGEBYSCORE key min max [WITHSCORES]
:按分数范围获取有序集中的成员,可以包括成员的分数。ZREVRANGEBYSCORE key max min [WITHSCORES]
:按分数范围的降序方式获取有序集中的成员。ZREMRANGEBYRANK key start stop
:根据排名范围删除有序集中的成员。ZREMRANGEBYSCORE key min max
:根据分数范围删除有序集中的成员。
Hash类型
Hash数据类型是一个键值对集合,每个键都关联着一个值。Hash类型常用于存储对象、记录或配置等。以下是关于Redis Hash数据类型的注意事项和一些常用命令:
注意事项:
- 字段唯一性:在一个Hash中,字段名是唯一的,不允许重复字段名。
- 适合存储对象:Hash类型适合用于存储复杂的数据结构,如用户信息、商品信息等。
- 字段数量可变:Hash中的字段数可以随时增加或减少。
- 对字段的操作不会影响整个Hash:对单个字段的操作,如获取、设置、删除字段值,不会影响其他字段。
常用命令:
-
HSET key field value
:设置Hash中指定字段的值。示例:
HSET user:1 username alice
-
HGET key field
:获取Hash中指定字段的值。示例:
HGET user:1 username
-
HDEL key field [field ...]
:删除Hash中一个或多个字段。示例:
HDEL user:1 username
-
HMSET key field value [field value ...]
:同时设置多个字段的值。示例:
HMSET user:1 username alice email alice@example.com
-
HMGET key field [field ...]
:获取Hash中多个字段的值。示例:
HMGET user:1 username email
-
HGETALL key
:获取Hash中所有字段和值。示例:
HGETALL user:1
-
HKEYS key
:获取Hash中所有字段的名称。示例:
HKEYS user:1
-
HVALS key
:获取Hash中所有字段的值。示例:
HVALS user:1
-
HEXISTS key field
:检查字段是否存在于Hash中。示例:
HEXISTS user:1 username
-
HINCRBY key field increment
:将字段的值增加一个整数。示例:
HINCRBY user:1 likes 1