【Redis】模糊查询

创建一条测试 数据 查询 (默认是 DB0)

创建:
set name xiaoming
查询:
get name 

1、模糊搜索查询 (redis 默认有16个DB , 0-15 )

Redis 模糊搜索
1、keys *   匹配数据库中所有 key 
2、keys h?llo   匹配 hello , hallo 和 hxllo 等。
3、keys h*llo   匹配 hllo 和 heeello 等。
4、keys h[ae]llo   匹配 hallo 和 hello ,但不匹配 hillo;特殊符号用 \ 隔开。
redis> keys *o*
1) "four"
2) "two"
3) "one"
redis> keys t??
1) "two"
redis> keys t[w]*
1) "two"
redis> keys *    # 匹配数据库内所有 key
1) "four"
2) "three"
3) "two"
4) "one"
redis-cli  进入默认是第一个DB 0 ; select 切换 DB 
> select 2;

2、删除指定key :

# 删除所有以 user 开头的key 可以这样实现:
# redis-cli keys "user*"
1) "user1"
2) "user2"

# redis-cli keys "user*" | xargs redis-cli del
(integer) 2
# 删除成功

# 删除当前数据库中的所有Key 
> flushdb 

# 删除所有数据库中的key 
> flushall

# 删除单个 key
redis> SET name zhangsan
OK
redis> DEL name
(integer) 1

# 删除一个不存在的 key
redis> EXISTS lisi
(integer) 0

redis> DEL phone   # 失败,没有 key 被删除
(integer) 0

# 同时删除多个 key
redis> SET name "redis"
OK
redis> SET type "key-value store"
OK
redis> SET website "redis.com"
OK
redis> DEL name type website
(integer) 3

# 批量删除匹配通配符的key用到了Linux中的管道和xargs参数:

redis-cli keys "s*" | xargs redis-cli del

# 如果需要制定数据库,需要用到 -n 数据库编号 参数,下面是删除 2数据库中 s开头的键:

redis-cli -n 2 keys "s*" | xargs redis-cli -n 2 del

redis-cli keys "*" | xargs redis-cli del 

# 如果redis-cli没有设置成系统变量,需要指定redis-cli的完整路径 
如:
/opt/redis/redis-cli keys "*" | xargs /opt/redis/redis-cli del

3、Redis Sortedset 数据查询

172.16.12.36:6003> zrank qa:hall 103228953392713728
(integer) 10021

172.16.12.36:6003> ZCARD qa:hall
(integer) 10022

4.TTL key : 以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live)。

返回值:
当 key 不存在时,返回 -2 。
当 key 存在但没有设置剩余生存时间时,返回 -1 。
否则,以秒为单位,返回 key 的剩余生存时间。
在 Redis 2.8 以前,当 key 不存在,或者 key 没有设置剩余生存时间时,命令都返回 -1 。

# 不存在的 key
redis> FLUSHDB
OK
redis> TTL key
(integer) -2

# key 存在,但没有设置剩余生存时间
redis> SET key value
OK
redis> TTL key
(integer) -1

# 有剩余生存时间的 key
redis> EXPIRE key 10086
(integer) 1

redis> TTL key
(integer) 10010

5、TYPE key : 返回 key 所储存的值的类型。

返回值:
none (key不存在)
string (字符串)
list (列表)
set (集合)
zset (有序集)
hash (哈希表)

示例:

# 字符串
redis> SET weather "sunny"
OK
redis> TYPE weather
string

# 列表
redis> LPUSH book_list "programming in scala"
(integer) 1
redis> TYPE book_list
list

# 集合
redis> SADD pat "dog"
(integer) 1
redis> TYPE pat
set

扩展:

《Redis系列之模糊匹配查询 - 原理了解》 

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Redis支持模糊查询,可以通过使用通配符来匹配一定范围内的key。 以下是几个常用的通配符: - *:匹配任意数量的字符,包括0个字符 - ?:匹配单个字符 使用通配符进行模糊查询的语法为: ``` KEYS pattern ``` 其中,pattern为匹配模式,可以包含通配符。 例如,要查找所有以foo开头的key,可以使用以下命令: ``` KEYS foo* ``` 要查找所有以bar结尾的key,可以使用以下命令: ``` KEYS *bar ``` 需要注意的是,使用模糊查询会影响Redis的性能,因此应该尽量避免在生产环境中使用。 ### 回答2: Redis是一种高性能的内存数据库,主要用于缓存数据和提供快速的读写操作。在Redis中,可以使用模糊查询来查找符合特定模式的键值对。 在Redis中,模糊查询主要使用通配符来匹配键的模式。通配符有两种常用的形式: 1. "*"通配符:表示匹配任意数量的字符,包括零个字符。例如,使用"key*"可以匹配以"key"开头的所有键,如"key1"、"key2"等。 2. "?"通配符:表示匹配一个字符。例如,使用"key?"可以匹配以"key"开头并且只有一个字符的键,如"key1"、"key2"等。 除了通配符,Redis还提供了一些特殊的模式匹配规则: 1. "[abc]":表示匹配括号内的任意一个字符。例如,使用"key[12]"可以匹配"key1"和"key2"。 2. "[^abc]":表示匹配不在括号内的任意一个字符。例如,使用"key[^12]"可以匹配除了"key1"和"key2"之外的键。 3. "[a-z]":表示匹配从a到z之间的任意一个字符。 使用Redis模糊查询可以很方便地查找符合特定模式的键值对,并且可以通过设置过期时间来实现缓存功能。但是需要注意的是,由于模糊查询需要遍历所有的键值对,所以在大规模数据的情况下,会影响查询的性能,建议做好优化措施。 ### 回答3: Redis模糊查询是指在使用Redis数据库进行查询时,可以使用通配符或正则表达式来匹配模式,从而进行模糊查询。 在Redis中,可以使用通配符进行模糊查询。通配符包括"*"和"?",其中"*"表示任意数量的字符,"?"表示一个字符。通过使用通配符,可以匹配的范围更加广泛,从而实现模糊查询。 另外,Redis还支持使用正则表达式进行模糊查询。正则表达式有更强的灵活性,能够更精确地匹配需要查询的数据。通过使用正则表达式,可以实现更复杂的模糊查询操作。 为了使用Redis模糊查询功能,需要使用相关的命令和参数。例如,使用KEYS命令可以获取匹配某个模式的所有键值对。使用SCAN命令可以遍历所有键值对,并根据正则表达式匹配进行过滤。 需要注意的是,在使用Redis进行模糊查询时,由于Redis是单线程的,大规模的模糊查询可能会对性能产生影响。因此,在进行模糊查询的时候,需要根据具体情况选择合适的查询方式,并注意性能优化。 总结来说,Redis模糊查询是一种通过使用通配符或正则表达式来匹配模式的查询方式,能够更灵活地查询需要的数据。在实际使用中,可以结合具体需求选择合适的查询方式,并注意性能优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值