本文介绍: 适合存储对象,因为可以对单个字段进行CURD,并且占用内存更少,如果采用String类型保存Java对象需要进行序列化JSON形式的字符串需要保存很多的{} ,: , “” 的符号,而Hash类型需要保存这些多余的符号。Redis中的SortSet一个排序的Set集合,与Java中的TreeSet相似,但底层实现差别较大,TreeSet基于红黑树实现,且需要自己编写排序逻辑,而ScoreSet基于score属性元素排序底层实现一个跳表加hash表。不存在key会被忽略

Redis通用命令

KEYS命令用于查找所有匹配给定模式 patternkey

生产环境建议使用KEYS命令,会影响效率。

匹配规则

使用 转义你想匹配的特殊字符

通过KEYS命令返回结果数组

# 创建一些 key赋值
redis> MSET firstname Jack lastname Stuntman age 35
"OK"
# 查找含有 namekey
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会被忽略

DEL语句返回值为被删除的数量

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

EXISTS命令用于检查给定 key 是否存在

从 Redis 3.0.3 起可以一次检查多个 key 是否存在。这种情况下,返回检查 key 中存在的 key 的个数

注意:如果相同的 key 在参数表中出现了多次,它会被计算多次。所以,如果somekey存在, EXISTS somekey somekey 命令返回 2。

EXISTS命令基本语法如下

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 的生存时间被更新为新值。

EXPIRE命令的返回值两个整数1:设置成功,0:key不存在

EXPIRE 命令基本语法如下

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.6 之前的版本如果 key 不存在或者 key 没有关联超时时间则返回 -1 。

Redis 2.8 起:

PPTL命令返回以毫秒为单位的剩余超时时间。

该两种命令的返回值都是剩余超时秒数,失败返回负数如上。

Redis的数据类型

Redis中存在很多数据结构,常用的是以下五种:String,Hash,List,set,ScortSet

String字符串类型

根据字符类型,又可以分为三种

不管是哪种类型底层都是字节数组形式存储,只不过编码方式不同,对于纯数字string类型,底层会采用二进制的方式存储节省空间字符串类型最大存储为512MB

常见命令

set key value

添加修改指定的key值

get key

获取指定key值

mset key1 value1 key2 value2

批量添加多个String键值

mget key1 key2

根据多个key获取多个value

incr key

整型的key的值自增1

incrby key size

整型的key的值自增并指定步长

incrbyfloat key size

让浮点型的key的值自增并指定步长

setnx key value

如果该key不存在,则添加,存在则不执行

setex key seconds value

添加键值对,并指定有效期

为了区分不同业务存储地址,通常我们拼接key,一般采用项目名:业务名:类型:id格式


Hash类型

又叫散列,其value是一个无序字典,类似于Java种的HashMap结构。适合存储对象,因为可以对单个字段进行CURD,并且占用内存更少,如果采用String类型保存Java对象需要进行序列化JSON形式的字符串,需要保存很多的{} ,: , “” 的符号,而Hash类型不需要保存这些多余的符号

常用命令

hset key field value

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

hget key field

获取存储在哈希表中的指定字段

hmset key field1 value1 field2 value2

批量添加多个hash类型的key的field的值

hmget key field1 filed2

批量获取多个hash类型的key的field的值

hgetall key

获取在哈希表中指定key的所有字段和值

hdel key field

删除存储在哈希表中的指定字段

hkeys key

获取哈希表中的所有字段

hvals key

获取哈希表中的所有值

hincrby key field size

让一个hash类型的key的字段值自增并执行步长

hsetnx key field value

加一hash类型的key的field值,如果存在则不执行


List类型

Redis种的List类型与Java中的LinkedList类型,可以当作双向链表,既可以支持正向检索也可以支持反向检索特征也与LinkedList类似

常见命令

lpush key element[element2]

将一个或者多个值插入到列表头

lpop key

移除并返回列表左侧第一个元素

rpush key element[element2]

将一个或多个值插入列表尾部

rpop key

移除并返回列表右侧第一个元素

lrange key start end

获取列表指定范围元素

llen key

获取列表长度

brpop[blpop] key timeout

移除并获取列表的最后一个元素[列表第一个元素],如果列表没有元素会阻塞列表直到等待超时或发现弹出元素为止


Set类型

Redis的Set结构与Java中的HashSet类似,可以看作是一个value为null的HashMap。因为Set类型本身也是一个hash表,因此具备与HashSet类似的特征

常见命令

sadd key member1[member2]

集合加一个或多个元素

srem key member1 [member2]

移除集合中一个或多个元素

scard key

获取集合的元素个数

sismember key member

判断一个元素是否存在于Set

smembers key

返回集合中的所有元素

sinter key1[key2]

返回给定所有集合的交集

sunion key1 key2 [key3]

返回所有给定集合的并集

sdiff key1 key2 [key3]

返回给定所有集合的差集


ScortSet类型

Redis中的SortSet是一个可排序的Set集合,与Java中的TreeSet相似,但底层实现差别较大,TreeSet是基于红黑树实现,且需要自己编写排序逻辑,而ScoreSet是基于score属性对元素排序底层实现是一个跳表加hash表。具备以下特性

  • 可排序
  • 元素不重复
  • 查询速度快

常见命令

zadd key score1 member1[score2 member2]

向集合中添加一个或多个元素或者更新已经存在元素的分数

zrank[zrevrank] key member

获取集合中指定元素的排名[倒序排名]

zcard key

获取集合中的元素个数

zcount key min max

统计给定分数值之间的元素个数

zincrby key size member

集合指定的元素的分数自增,并指定增量

zrange key start end[withscores]

通过索引区间返回集合中指定排名范围的元素。如果添加了withscore连同分数一起展示

zrangebyscore key min max

通过score排序后,获取指定分数范围内的元素

zrem key member[member]

移除集合中的一个或多个元素

zdiff、zinter、zunion

求差集、交集、并集

原文地址:https://blog.csdn.net/zmbwcx/article/details/134742722

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_26662.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注