前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Redis 常用命令以及使用事务、设置key超时

Redis 常用命令以及使用事务、设置key超时

作者头像
青山师
发布2023-05-04 20:12:02
3170
发布2023-05-04 20:12:02
举报

Redis 中的事务

使用MULTI与EXEC之间之间执行多个操作来处理一个事务:

代码语言:javascript
复制
127.0.0.1:6379> MULTI
OK
127.0.0.1:6379> SADD key element
QUEUED
127.0.0.1:6379> LPUSH helper_key x
QUEUED
127.0.0.1:6379> EXEC
1) (integer) 1
2) (integer) 1

MULTI开启事务(开启成功返回OK),MULTI与EXEC之间的多个操作仅仅是暂时缓存起来(我们可以看到返回为QUEUED),直到执行EXEC时,提交事务。

Redis 超时(TTL):数据在限定时间内存活

Redis可以expire对键设置生命周期TTL:

代码语言:javascript
复制
/*先存入数据到list中*/
127.0.0.1:6379> lpush ttlTestList ttl
(integer) 1
/*再设置超时时间(为5秒失效)*/
127.0.0.1:6379> expire ttlTestList 5
(integer) 1

5秒后获取元素为空:

代码语言:javascript
复制
127.0.0.1:6379> lpop ttlTestList
(nil)

我们看到超时时间一过,ttlTestList键被删除了

代码语言:javascript
复制
127.0.0.1:6379> keys *
1) "zset"
2) "set"
3) "helper_key"
4) "mylist"
5) "user"
6) "mykey"
7) "relList"

上面的例子使用了EXPIRE来设置超时时间(也可以再次调用这个命令来改变超时时间,使用PERSIST命令去除超时时间 )。 使用ttl:

代码语言:javascript
复制
127.0.0.1:6379> lpush ttlTestList ttl
(integer) 1
/*设置超时时间为10秒*/
127.0.0.1:6379> expire ttlTestList 10
(integer) 1
/*使用ttl查看剩余存活时间*/
127.0.0.1:6379> ttl ttlTestList
(integer) 5

KEYS 命令

keys pattern 可以查看所在数据库中符合pattern匹配模式的键,pattern通配符:

符号

含义

?

匹配一个字符

*

匹配任意字符(包括0个字符)

[]

匹配括号里的任意字符,也可以使用“-”表示范围,如a[b-d]可以匹配ab、ac、ad

\x

可以匹配转义字符。如匹配?,就使用\?

代码语言:javascript
复制
127.0.0.1:6379[1]> keys list?
1) "list1"

注意: keys会便利数据库的所有键,如果键数量较大,不建议在生产使用.

EXISTS 命令

exists 用于判断某个键是否存在,存在返回1,否则返回0.

代码语言:javascript
复制
127.0.0.1:6379[15]> keys *
1) "testKey"
127.0.0.1:6379[15]> exists testKey
(integer) 1
127.0.0.1:6379[15]> exists testKey2
(integer) 0

DEL 命令

del 用于删除一个或多个键,del key [key2…],返回值是删除的键的个数:

代码语言:javascript
复制
127.0.0.1:6379[15]> del testKey
(integer) 1
/*因为之前已经删除testKey键了,再使用del操作时,实际上并没有删除任何键,于是返回0*/
127.0.0.1:6379[15]> del testKey
(integer) 0

SELECT 命令

Redis 的数据库默认存在编号为0-15的共计16个数据库实例,可以通过设置databases参数修改这个默认设置。我们可以使用SELECT命令选择使用指定的数据库:

代码语言:javascript
复制
/*选择使用数据库1*/
127.0.0.1:6379[1]> select 1
OK
/*在数据库1中设置一个键*/
127.0.0.1:6379[1]> lpush list1 ele1
(integer) 1
127.0.0.1:6379[1]> keys *
1) "list1"

切换数据库0,在数据库0中是看不到数据库1中的键的:

代码语言:javascript
复制
/*切换到数据库0*/
127.0.0.1:6379[1]> select 0
OK
/*数据库0中无键*/
127.0.0.1:6379> keys *
(empty list or set)

FLUSHALL 命令

flushall 命令会清除所有数据库实例的键值数据(默认配置的话数据库0-15会全删除)。恨他,就用flushall来对付他吧。

TYPE 命令

type 命令用来获取键的类型,返回值可能是 string(字符串类型)list(列表类型)set(集合类型)hash(散列类型)zset(有序集合类型)

RANDOMKEY

randomkey 可以随机获取当前数据库中的一个键。

代码语言:javascript
复制
127.0.0.1:6379> select 0
OK
127.0.0.1:6379> keys *
1) "strkey4"
2) "setKey"
3) "code_list1"
4) "foo"
5) "strkey3"
6) "strkey27"
7) "strkey6"
8) "strkey5"
127.0.0.1:6379> randomkey
"strkey4"
127.0.0.1:6379> randomkey
"setKey"
127.0.0.1:6379> randomkey
"strkey3"
127.0.0.1:6379> randomkey
"strkey4"
127.0.0.1:6379> randomkey
"strkey6"

RENAME 重命名键名

rename oldKeyName newKeyName 将oldKeyName 键改名为newKeyName。

代码语言:javascript
复制
127.0.0.1:6379> keys *
1) "strkey4"
2) "setKey"
3) "code_list1"
4) "foo"
5) "strkey3"
6) "strkey27"
7) "strkey6"
8) "strkey5"
127.0.0.1:6379> rename setKey setKey88
OK
127.0.0.1:6379> keys *
1) "strkey3"
2) "foo"
3) "code_list1"
4) "strkey5"
5) "strkey6"
6) "strkey4"
7) "setKey88"
8) "strkey27"

MOVE

move 命令可以将一个数据库中的键移动到另一个数据库中:

代码语言:javascript
复制
/*数据库0中的key*/
127.0.0.1:6379> keys *
 1) "counter:__rand_int__"
 2) "key:__rand_int__"
 3) "strkey3"
 4) "code_list1"
 5) "strkey5"
 6) "strkey6"
 7) "strkey4"
 8) "setKey88"
 9) "mylist"
10) "strkey27"
代码语言:javascript
复制
/*数据库1中无key*/
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> keys *
(empty list or set)
代码语言:javascript
复制
/*移动0中的key到1中*/
11) "strkey27"
127.0.0.1:6379> move foo 1
(integer) 1
127.0.0.1:6379> keys *
 1) "counter:__rand_int__"
 2) "key:__rand_int__"
 3) "strkey3"
 4) "code_list1"
 5) "strkey5"
 6) "strkey6"
 7) "strkey4"
 8) "setKey88"
 9) "mylist"
10) "strkey27"
代码语言:javascript
复制
/*查看1中,可以看到刚刚移动过来的key:foo*/
127.0.0.1:6379[1]> keys *
1) "foo"
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-10-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Redis 中的事务
  • Redis 超时(TTL):数据在限定时间内存活
  • KEYS 命令
  • EXISTS 命令
  • DEL 命令
  • SELECT 命令
  • FLUSHALL 命令
  • TYPE 命令
  • RANDOMKEY
  • RENAME 重命名键名
  • MOVE
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档