6.redis常用命令汇总

KEYS命令: KEYS PATTERN

Keys 命令用于查找所有符合给定模式 pattern 的 key 。

redis 127.0.0.1:6379> KEYS PATTERN ​ //查找以 runoob 为开头的 key: redis 127.0.0.1:6379> SET runoob1 redis OK redis 127.0.0.1:6379> SET runoob2 mysql OK redis 127.0.0.1:6379> SET runoob3 mongodb OK ​ //获取 redis 中所有的 key 可用使用 *。 redis 127.0.0.1:6379> KEYS * 1) "runoob3" 2) "runoob1" 3) "runoob2

keys:全量遍历键,用来列出所有满足特定正则字符串规则的key,假设redis此时正在生产环境下,使用该命令就会造成隐患,当redis数据量比较大时,keys会一次性返回所有符合条件的key,所以会造成redis的卡顿。 另外如果一次性返回所有key,对内存的消耗在某些条件下也是巨大的。 keys性能比较差,要避免使用。不推荐使用keys命令,推荐使用scan。

EXISTS命令:EXISTS KEY

用于检查给定 key 是否存在。

redis 127.0.0.1:6379> EXISTS KEY_NAME //若 存在key=KEY_NAME 存在返回 1 ,否则返回 0 。 redis 127.0.0.1:6379> EXISTS runoob-new-key (integer) 0 ​ //现在我们创建一个名为 runoob-new-key 的键并赋值,再使用 EXISTS 命令。 redis 127.0.0.1:6379> set runoob-new-key newkey OK redis 127.0.0.1:6379> EXISTS runoob-new-key (integer) 1 redis 127.0.0.1:6379>

DEL 命令:DEL KEY

DEL 命令用于删除已存在的键,不存在的 key会被忽略。

//返回被删除 key 的数量。 redis 127.0.0.1:6379> DEL KEY_NAME ​ redis 127.0.0.1:6379> SET w3ckey redis OK ​ redis 127.0.0.1:6379> DEL w3ckey (integer) 1

RENAME命令:RENAME OLDKEY NEWKEY

重命名key

改名成功时提示 OK ,失败时候返回一个错误。

当 OLDKEYNAME 和 NEWKEYNAME 相同,或者 OLDKEYNAME 不存在时,返回一个错误。 当 NEWKEYNAME 已经存在时, RENAME 命令将覆盖旧值。

``` redis 127.0.0.1:6379> RENAME OLDKEYNAME NEWKEYNAME ​

key 存在且 newkey 不存在

​ redis> SET message "hello world" OK ​ redis> RENAME message greeting OK ​ redis> EXISTS message               # message 不复存在 (integer) 0 ​ redis> EXISTS greeting              # greeting 取而代之 (integer) 1 ​ ​

当 key 不存在时,返回错误

​ redis> RENAME fakekey neverexists (error) ERR no such key ​ ​

newkey 已存在时, RENAME 会覆盖旧 newkey

​ redis> SET pc "lenovo" OK ​ redis> SET personalcomputer "dell" OK ​ redis> RENAME pc personalcomputer OK ​ redis> GET pc (nil) ​ redis:1> GET personal_computer      # 原来的值 dell 被覆盖了 "lenovo" ```

TYPE命令

//返回的是数据的类型 //示例:这个方法可以非常简单的判断出值的类型 redis 127.0.0.1:6379> type addr string redis 127.0.0.1:6379> type myzset2 zset redis 127.0.0.1:6379> type mylist list redis 127.0.0.1:6379>

SELECT命令

选择数据库:Select 15即选择下标为15的数据库

★SACN

Scan 命令用于迭代数据库中的数据库键。 ​ SCAN 命令是一个基于游标的迭代器,每次被调用之后, 都会向用户返回一个新的游标, 用户在下次迭代时需要使用这个新游标作为 SCAN 命令的游标参数, 以此来延续之前的迭代过程。SCAN以0作为游标,开始一次新的迭代,直到命令返回游标0完成一次遍历。另外,SCAN支持模糊查询。 ​ SCAN 返回一个包含两个元素的数组, 第一个元素是用于进行下一次迭代的新游标, 而第二个元素则是一个数组, 这个数组中包含了所有被迭代的元素。如果新游标返回 0 表示迭代已结束。

SSCAN 命令用于迭代集合键中的元素。 HSCAN 命令用于迭代哈希键中的键值对。 ZSCAN 命令用于迭代有序集合中的元素(包括元素成员和元素分值)。

SCAN cursor [MATCH pattern] [COUNT count] cursor - 游标。 pattern - 匹配的模式。 count - 指定从数据集里返回多少元素,默认值为 10 。

```

SADD myset1 "Google" (integer) 1 SADD myset1 "Runoob" (integer) 1 SADD myset1 "Taobao" (integer) 1 SSCAN myset1 0 match R* 1) "0" 2) 1) "Runoob" ​ ​ HMSET sites google "google.com" runoob "runoob.com" weibo "weibo.com" 4 "taobao.com" OK HSCAN sites 0 match "run" 1) "0" 2) 1) "runoob" 2) "runoob.com" ​ ZADD site 1 "Google" 2 "Runoob" 3 "Taobao" 4 "Weibo" (integer) 4 ZSCAN site 0 match "R" 1) "0" 2) 1) "Runoob" 2) 2.0 ```

redis 127.0.0.1:6379> scan 0   # 使用 0 作为游标,开始新的迭代 1) "17"                        # 第一次迭代时返回的游标 2)  1) "key:12"    2) "key:8"    3) "key:4"    4) "key:14"    5) "key:16"    6) "key:17"    7) "key:15"    8) "key:10"    9) "key:3"   10) "key:7"   11) "key:1" redis 127.0.0.1:6379> scan 17  # 使用的是第一次迭代时返回的游标 17 开始新的迭代 1) "0" 2) 1) "key:5"   2) "key:18"   3) "key:0"   4) "key:2"   5) "key:19"   6) "key:13"   7) "key:6"   8) "key:9"   9) "key:11"

注意:但是scan并非完美无瑕, 如果在scan的过程中如果有键的变化(增加、 删除、 修改) ,那么遍历效果可能会碰到如下问题: 新增的键可能没有遍历到, 遍历出了重复的键等情况, 也就是说scan并不能保证完整的遍历出来所有的键, 这些是我们在开发时需要考虑的。

设置key的生存时间

Redis在实际使用过程中更多的用作缓存,然而缓存的数据一般都是需要设置生存时间的,即:到期后数据销毁。

EXPIRE key seconds

生存时间(单位:秒) key在多少秒后会自动删除。设置成功返回 1 。 当key不存在或者不能为key设置过期时间时返回 0 。

PEXPIRE key milliseconds 生存时间设置单位为:毫秒 Redis PEXPIRE命令和EXPIRE命令的作用类似。 但是它以毫秒为单位设置 key 的生存时间,而不像 EXPIRE 命令那样,以秒为单位。

TTL key

查看key剩余的生存时间 当 key 不存在时,返回 -2 。 当 key 存在但没有设置剩余生存时间时,返回 -1 。 否则,以秒为单位,返回 key 的剩余生存时间。

PERSIST key

用于移除给定 key 的过期时间,使得 key 永不过期。

192.168.101.3:7002> set test 1    设置test的值为1 OK 192.168.101.3:7002> get test 获取test的值 "1" 192.168.101.3:7002> EXPIRE test 5    设置test的生存时间为5秒 (integer) 1 192.168.101.3:7002> TTL test 查看test的生于生成时间还有1秒删除 (integer) 1 192.168.101.3:7002> TTL test key 不存在 (integer) -2 192.168.101.3:7002> get test 获取test的值,已经删除 (nil)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值