hget和get redis_redis基础指令及数据类型

全局指令

redis有5种数据类型,它们是键值对中的值,对于键来说有些通用的命令。这里称之为全局指令。

set 创建一个键值对

127.0.0.1:6379> set a 1

mset 创建多个键值对

127.0.0.1:6379> mset a 1 b 2 c 3

OK

get 通过键来获得值

127.0.0.1:6379> get a

mget 获取多个键值

127.0.0.1:6379> mget a b c

1) "1"

2) "2"

3) "3

dbsize 统计键的个数

注:dbsize是通过数据库内置的计数器来实现的,并不是将所有键遍历后统计的,不必担心影响服务器的性能。

127.0.0.1:6379> dbsize

exists 检查某个键是否存在,存在返回1,不存在返回0

127.0.0.1:6379> exists a # 键 a存在

(integer) 1

127.0.0.1:6379> exists d # 键 d 不存在

(integer) 0

del 删除指定键,成功返回1,没有指定键返回0

127.0.0.1:6379> del mylist # 删除单个键

127.0.0.1:6379> del a b # 删除多个键

expire 设置键过期,以秒为单位

127.0.0.1:6379> set hello world #设置一个键

127.0.0.1:6379> expire hello 50 #设置键50秒后过期

(integer) 1

127.0.0.1:6379> get hello #在过期之前可以查询到键值

"world"

127.0.0.1:6379> ttl hello # 使用ttl指令查看键的失效时间

(integer) 38

127.0.0.1:6379> ttl hello # -2:表示键不存在

(integer) -2

127.0.0.1:6379> get hello # 查询不到键值了

(nil)

关于ttl指令查询的返回值:

大于0:键剩余的过期时间;

-1:键没设置过期时间;

-2:键不存在或已过期;

expireat 设置过期时间,以unix时间戳为单位

127.0.0.1:6379> set hello world

OK

127.0.0.1:6379> expireat hello 1583478533 # 最后为unix时间戳

(integer) 1

127.0.0.1:6379> ttl hello

(integer) 1056

127.0.0.1:6379> ttl hello

(integer) 1052

rename 更改键名

127.0.0.1:6379> set hello world

OK

127.0.0.1:6379> rename hello abc # 将键名改为abc

OK

127.0.0.1:6379> get hello

(nil)

127.0.0.1:6379> get abc

"world"

*keys 列出所有键**

这个指令生产中不建议使用,忘了就好。

127.0.0.1:6379> keys *

randomkey 随机返回一个键名

127.0.0.1:6379> randomkey

"c"

127.0.0.1:6379> randomkey

"user:1_2:sdiff"

type 查询键值的数据类型

127.0.0.1:6379> type a

string

**数据类型有:**

string:字符串。

hash:哈希。

list:列表。

set:集合。

zset:有序集合。

select 切换库

redis中默认有16个库,编号为:0–15,配置文件中下面配置决定了库的数量:

databases 16 # 16个库

默认登录后处于编号为0的库中,使用select指令进行切库操作。

127.0.0.1:6379> select 12

OK

127.0.0.1:6379[12]> select 0

OK

迁移键

move 库和库内部迁移

注:move迁移后,源库将不存在被迁移走的键值对。

127.0.0.1:6379> get abc

"world"

127.0.0.1:6379> move abc 12 # 迁移到编号为12的库

(integer) 1

127.0.0.1:6379> get abc # 当前库就没有这个键值了

(nil)

127.0.0.1:6379> select 12 # 切换到编号为12的库

OK

127.0.0.1:6379[12]> get abc # 可以查看到键值

"world"

dump+restore 多个redis实例上进行迁移键值

dump:进行序列化备份,格式是rdb。

restore:是将dump产生的序列化的值复原,命令格式为:restore key ttl serialized-value,其中key表示定义的新键名;ttl:设置过期时间,设置为0表示永不过期;serialized-value则为dump产生的序列化值。

# redis01实例上

127.0.0.1:6379> set hello world

OK

127.0.0.1:6379> dump hello # 获取下面的序列化编码

"\x00\x05world\t\x00\xc9#mH\x84/\x11s"

# redis02实例上

127.0.0.1:6379> restore new_hello 0 "\x00\x05world\t\x00\xc9#mH\x84/\x11s"

OK

127.0.0.1:6379> get new_hello

"world"

注:整个迁移过过程,并非原子性。

migrate 具有原子性的迁移

命令格式:migrate host port key| destination-db timeout [COPY] [REPLACE]

host:主机IP

port:端口

key:要迁移的键

destination-db:要迁移到对端的哪个编号的库?

timeout:超时时间,单位为毫秒

COPY:是否复制,默认为剪切的方式

replace:migrate不管目标redis是否存在该键都会正常迁移进行数据覆盖。

下面是模拟redis01主机迁移数据到redis02

# 主机redis01上,设置两个键值,以不同的方式进行迁移

127.0.0.1:6379> set a move_test

OK

127.0.0.1:6379> set b move_test_02

OK

127.0.0.1:637

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值