Redis的键(Key)使用

59 阅读4分钟

来自文章集合:一文带你搞懂redis使用过程(持续更新中)

键(key)

介绍

在Redis中,键(key)是用于标识存储的数据的名称。就像是一个文件系统中的文件名一样,键用于唯一标识存储在Redis中的数据。这些数据可以是字符串、哈希表、列表、集合、有序集等不同类型的数据结构。你可以将键看作是一个数据存储的标签,使用这个标签你可以随时检索和更新存储在Redis中的数据。例如,如果你想存储一个用户的姓名,你可以将键设置为"user:123:name",其中"user:123"是用户的唯一标识,"name"表示用户的姓名。这样,你就可以使用这个键来存储和检索用户的姓名信息。

使用

#  查询键(可看作数据库的表名)keys <pattern>
127.0.0.1:6379> keys s*
1) "site"

127.0.0.1:6379> keys *
1) "redis_text_1"
2) "site"

#  插入一个键名为redis_text_1的键
127.0.0.1:6379> set redis_text_1 redis
OK

#  查询键的数据结构类型
127.0.0.1:6379> type redis_text_1
string

#  查询一个键名为redis_text_1的键中的内容
127.0.0.1:6379> get redis_text_1
"redis"

#  删除键名为redis_text_1的键
127.0.0.1:6379> del redis_text_1
(integer) 1

#  查询键是否存在
127.0.0.1:6379> exists redis_text_1
(integer) 0

#  设置键的消失时间,时间为10秒
127.0.0.1:6379> expire redis_text_1 10
(integer) 1

#  设置键的消失时间,过期时间为时间戳(unix timestamp) 以秒计
127.0.0.1:6379> expireat redis_text_1 1697424950
(integer) 1

#  设置键的消失时间,时间格式为10毫秒
127.0.0.1:6379> PEXPIRE redis_text_1 10000
(integer) 1
127.0.0.1:6379> keys *
1) "redis_text_1"
2) "site"
127.0.0.1:6379> keys *
1) "site"

#  设置键的消失时间, 过期时间为时间戳(unix timestamp),以毫秒技
127.0.0.1:6379>  PEXPIREAT redis_text_1 1697510992000
(integer) 1


#  移除key的过期时间,使得key永不过期,过期时间为秒。ttl以秒为单位,返回给定 key 的剩余生存时间。PTTL以毫秒为单位返回 key 的剩余的过期时间。
127.0.0.1:6379> expire redis_text_1 60
(integer) 1
127.0.0.1:6379> ttl redis_text_1
(integer) 52
127.0.0.1:6379> PERSIST redis_text_1
(integer) 1
127.0.0.1:6379> ttl redis_text_1
(integer) -1

#  移除key的过期时间,使得key永不过期,过期时间为时间戳(秒)。
127.0.0.1:6379> expireat redis_text_1 1697511691
(integer) 1
127.0.0.1:6379> TTL redis_text_1
(integer) 28
127.0.0.1:6379> PERSIST redis_text_1
(integer) 1
127.0.0.1:6379> ttl redis_text_1
(integer) -1

#  移除key的过期时间,使得key永不过期,过期时间为毫秒。
127.0.0.1:6379> PEXPIRE redis_text_1 60000
(integer) 1
127.0.0.1:6379> ttl redis_text_1
(integer) 56
127.0.0.1:6379> PTTL redis_text_1
(integer) 43180
127.0.0.1:6379> PERSIST redis_text_1
(integer) 1
127.0.0.1:6379> PTTL redis_text_1
(integer) -1

#  选择redis数据库,redis数据库默认有16个数据库(0~15),默认在0数据库,
127.0.0.1:6379> config get databases
1) "databases"
2) "16"

127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> select 0
OK

#  移动数据库中的key到另一个数据库,再移动回来
127.0.0.1:6379> set redis_text_1 redis
OK
127.0.0.1:6379> keys *
1) "redis_text_1"
2) "site"
127.0.0.1:6379> move redis_text_1 1
(integer) 1
127.0.0.1:6379> keys *
1) "site"
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> keys *
1) "redis_text_1"
127.0.0.1:6379[1]> move redis_text_1 0
(integer) 1
127.0.0.1:6379[1]> EXISTS redis_text_1
(integer) 0
127.0.0.1:6379[1]> select 0
OK
127.0.0.1:6379> EXISTS redis_text_1
(integer) 1
127.0.0.1:6379> get redis_text_1
"redis"


#  随机显示一个key
127.0.0.1:6379> randomkey
"redis_text_1"
127.0.0.1:6379> randomkey
"site"
127.0.0.1:6379> randomkey
"redis_text_1"
127.0.0.1:6379> keys *
1) "redis_text_1"
2) "site"

#  删除所有的key:FLUSHDB
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> randomkey
(nil)
127.0.0.1:6379> keys *
(empty list or set)

#  修改key名:RENAME <OLD_KEY_NAME> <NEW_KEY_NAME>
127.0.0.1:6379> set redis_text_1 redis_1
OK
127.0.0.1:6379> set redis_text_2 redis_2
OK
127.0.0.1:6379> set redis_text_3 redis_3
OK
127.0.0.1:6379> keys *
1) "redis_text_2"
2) "redis_text_1"
3) "redis_text_3"
127.0.0.1:6379> RENAME redis_text_1 redis_text_4
OK
127.0.0.1:6379> EXISTS redis_text_1
(integer) 0
127.0.0.1:6379> get redis_text_4
"redis_1"

#  如果新名字(NEW_KEY_NAME)已存在,使用新内容覆盖老内容
127.0.0.1:6379> RENAME redis_text_4 redis_text_2
OK
127.0.0.1:6379> keys *
1) "redis_text_2"
2) "redis_text_3"
127.0.0.1:6379> get redis_text_2
"redis_1"

#  仅当新名字不存在时,才进行执行:RENAMENX <OLD_KEY_NAME> <NEW_KEY_NAME>
127.0.0.1:6379> get redis_text_2
"redis_1"
127.0.0.1:6379> RENAMENX redis_text_2 redis_text_3
(integer) 0
127.0.0.1:6379> keys *
1) "redis_text_2"
2) "redis_text_3"
127.0.0.1:6379> get redis_text_2
"redis_1"


#  查看key的类型:Type <key_name>
127.0.0.1:6379> type redis_text_2
string

127.0.0.1:6379> hmset redis_hash_1 name "redis black" description "This is a redis black"
OK
127.0.0.1:6379> hgetall redis_hash_1
1) "name"
2) "redis black"
3) "description"
4) "This is a redis black"
127.0.0.1:6379> type redis_hash_1
hash

127.0.0.1:6379> LPUSH redis_list_1 1
(integer) 1
127.0.0.1:6379> type redis_list_1
list

127.0.0.1:6379> sadd redis_set_1 1
(integer) 1
127.0.0.1:6379> type redis_set_1
set

127.0.0.1:6379> zadd redis_sort_set_1 1 black
(integer) 1
127.0.0.1:6379> zadd redis_sort_set_1 2 blue
(integer) 1
127.0.0.1:6379> type redis_sort_set_1
zset