Redis通用命令
KEYS命令用于查找所有匹配给定模式 pattern 的 key 。
- h?llo 匹配 hello, hallo 和 hxllo
- h*llo 匹配 hllo 和 heeeello
- h[ae]llo 匹配 hello and hallo, 不匹配 hillo
- h[^e]llo 匹配 hallo, hbllo, … 不匹配 hello
- h[a-b]llo 匹配 hallo 和 hbllo
# 创建一些 key 并赋值
redis> MSET firstname Jack lastname Stuntman age 35
"OK"
# 查找含有 name 的 key
redis> KEYS *name*
1) "firstname"
2) "lastname"
# 查找以 a 为开头长度为 3 的 key
redis> KEYS a??
1) "age"
# redis 获取所有的 key 使用 *。
redis> KEYS *
1) "age"
2) "firstname"
3) "lastname"
DEL命令用于删除给定的一个或多个 key 。不存在的key会被忽略。
redis> SET key1 "Hello"
"OK"
redis> SET key2 "World"
"OK"
redis> SET key3 "redis.com.cn"
"OK"
redis> DEL key1 key2 key3 key4
(integer) 3
从 Redis 3.0.3 起可以一次检查多个 key 是否存在。这种情况下,返回待检查 key 中存在的 key 的个数。
注意:如果相同的 key 在参数列表中出现了多次,它会被计算多次。所以,如果somekey存在, EXISTS somekey somekey 命令返回 2。
redis> SET key1 "Hello"
"OK"
redis> EXISTS key1
(integer) 1
redis> EXISTS nosuchkey
(integer) 0
redis> SET key2 "World"
"OK"
redis> EXISTS key1 key2 nosuchkey
(integer) 2
EXPIRE命令设置 key 的过期时间(seconds)。 设置的时间过期后,key 会被自动删除。
超时时间只能使用删除 key 或者覆盖 key 的命令清除,包括 DEL, SET, GETSET和所有的 *STORE 命令。 对于修改 key 中存储的值,而不是用新值替换旧值的命令,不会修改超时时间。例如,自增 key 中存储的值的 INCR, 向list中新增一个值 LPUSH, 或者修改 hash 域的值 HAST,这些都不会修改 key 的过期时间。
通过使用 PERSIST命令把 key 改回持久的 key,这样 key 的过期时间也可以被清除。
key使用 RENAME 改名后,过期时间被转移到新 key 上。
已经设置过期的key,可以调用 EXPIRE 重新设置。在这种情况下 key 的生存时间被更新为新值。
redis> SET mykey "Hello"
"OK"
redis> EXPIRE mykey 10
(integer) 1
redis> TTL mykey
(integer) 10
redis> SET mykey "Hello World"
"OK"
redis> TTL mykey
(integer) -1
TTL命令以秒为单位返回 key 的剩余过期时间。用户客户端检查 key 还可以存在多久。
Redis 2.8 起:
Redis的数据类型
Redis中存在很多数据结构,常用的是以下五种:String,Hash,List,set,ScortSet
不管是哪种类型,底层都是字节数组形式存储,只不过编码方式不同,对于纯数字的string类型,底层会采用二进制的方式存储,节省空间。字符串类型最大存储为512MB
常见命令
get key |
|
mget key1 key2 |
|
incr key |
让整型的key的值自增1 |
如果该key不存在,则添加,存在则不执行 |
|
添加键值对,并指定有效期 |
为了区分不同业务的存储地址,通常我们会拼接key,一般采用项目名:业务名:类型:id的格式
Hash类型
又叫散列,其value是一个无序字典,类似于Java种的HashMap结构。适合存储对象,因为可以对单个字段进行CURD,并且占用内存更少,如果采用String类型保存Java对象,需要进行序列化JSON形式的字符串,需要保存很多的{} ,: , “” 的符号,而Hash类型不需要保存这些多余的符号。
hget key field |
获取存储在哈希表中的指定字段 |
hgetall key |
获取在哈希表中指定key的所有字段和值 |
删除存储在哈希表中的指定字段 |
|
hkeys key |
获取哈希表中的所有字段 |
获取哈希表中的所有值 |
|
List类型
Redis种的List类型与Java中的LinkedList类型,可以当作双向链表,既可以支持正向检索也可以支持反向检索。特征也与LinkedList类似
常见命令
llen key |
|
Set类型
Redis的Set结构与Java中的HashSet类似,可以看作是一个value为null的HashMap。因为Set类型本身也是一个hash表,因此具备与HashSet类似的特征
常见命令
移除集合中一个或多个元素 |
|
scard key |
获取集合的元素个数 |
smembers key |
返回集合中的所有元素 |
sinter key1[key2] |
返回给定所有集合的交集 |
sunion key1 key2 [key3] |
返回所有给定集合的并集 |
sdiff key1 key2 [key3] |
返回给定所有集合的差集 |
Redis中的SortSet是一个可排序的Set集合,与Java中的TreeSet相似,但底层实现差别较大,TreeSet是基于红黑树实现,且需要自己编写排序逻辑,而ScoreSet是基于score属性对元素排序,底层实现是一个跳表加hash表。具备以下特性:
- 可排序
- 元素不重复
- 查询速度快
常见命令
获取集合中指定元素的排名[倒序排名] |
|
zcard key |
获取集合中的元素个数 |
集合指定的元素的分数自增,并指定增量 |
|
移除集合中的一个或多个元素 |
|
求差集、交集、并集 |
原文地址:https://blog.csdn.net/zmbwcx/article/details/134742722
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_26662.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!