Redis 常用命令

参考

基本类型

redis 中的table是以key的形式存在的,key可以分为五种类型

  1. string: 字符串
  2. hash: 哈希
  3. list: 列表
  4. set: 集合
  5. zset: 有序集合(sorted set)

后面又增加了

  • bit arrays (或者说 simply bitmaps)
  • 在 2.8.9 版本又添加了HyperLogLog

数据库

默认情况下 redis 提供了 16 个 db,即db0 - db15

# 修改数据库个数
$ vim redis.conf
databases 16

# 修改密码
$ vim redis.conf
requirepass 123456

连接 redis command line

# 语法
$ redis-cli [OPTIONS] [cmd [arg [arg ...]]]

# 查看帮助
$ redis-cli --help

# 默认连接 db0
# -h: ip/host
# -p: port
# -a: password
# --raw: 不显示字节码,以原生的方式显示
$ redis-cli -h rus-service -p 6379 -a 123456 --raw
# 检验是否成功连接
redis01:6379> ping
PONG

切换数据库

# 语法 
redis01:6379> select index (0~15)
# 切换到 db1
redis01:6379> select 1
redis01:6379[1]>

清空数据(线上环境别用!)

# 删除当前数据库的所有 keys
redis01:6379> flushdb

# 删除所有数据库的所有 keys
redis01:6379> flushall

查看当前 db 下 keys 数量

# dbsize 和 `keys *` 统计的数量可能是不一样的,`keys *`统计的是当前 db 
# 有效的 key,而 dbsize 统计的是所有未被销毁的 key。有效和未被销毁是不一
# 样的,具体可以了解 redis 的过期策略。`key *`在数据量特别大的正式环境严禁使用!
redis01:6379> dbsize

将当前 db 的 key 移动到指定 db

redis01:6379> move key dest_db

System config

# 获取所有配置
redis01:6379> config get *

# 获取指定配置,如:查看安装路径
redis01:6379> config get dir 

# 修改指定配置
redis01:6379> config set [key] [value]
# 例如:修改日志等级
redis01:6379> config set logleve "notice"

# 查看 redis 系统信息,包含 Server、Clients、Memory、
# Persistence、 Stats、Replication、CPU、Cluster、
# Keyspace 等信息,其中 Keyspace 包含各个 db keys 数
# 量、expires 数量
redis01:6379> info

Key 操作

查看

# key 是否存在,返回 integer,即返回存在的数量
redis01:6379> exists key [key2...]

# 查看给定模式的 key(非正则)
# 时间复杂度为O(n),严禁在正式环境使用该命,因为 redis 是单线程的,执行该命令会直接影响 redis service 性能
# 建议使用 scan,分批次扫描 redis 虽然查询总时间变长,但不会导致 redis service 卡顿
# http://doc.redisfans.com/key/scan.html
redis01:6379> keys [pattern]
# 例如:查看所有的 key
redis01:6379> keys *

# 随机返回一个 db 中存在的 key
redis01:6379> randomkey

# 删除 key,返回 integer,即返回删除成功的数量
redis01:6379> del key [key1...] 

# 随机返回一个 key
redis01:6379> randomkey

# 查看 key 类型,none 说明 key 不存在
redis01:6379> type "key_name"

设置 key 过期时间

# 设置 key 的过期时间,过期后 key 将变为不可用的,但并不会立即销毁
redis01:6379> expire key time_in_seconds

# 同 expire,但接收参数是 unix timestamp,到时间戳指定的时间就过期
redis01:6379> expireat key unix_timestamp

# 同 expireat,接收参数是毫秒的 unix timestamp
redis01:6379> pexpireat key milliseconds_unix_timestamp

# 移除过期时间,如果 key 不存在或者没有设置过期时间,返回0(失败)
redis01:6379> persist key

# 以毫秒为单位返回 key 的剩余过期时间
redis01:6379> pttl key

# 以秒为单位返回 key 的剩余过期时间(time to live)
redis01:6379> ttl key

修改

# 重命名 key,如果 newkey 存在则覆盖
redis01:6379> rename oldkey newkey

# 检测 newkey 是否存在,如果存在返回0(失败)
redis01:6379> renamenx oldkey newkey

# 序列化给定 key,并返回被序列化的值
redis01:6379> dump key

String

Hash

Hash 是<field, value>的键值对的集合,这里用field是为了和 rediskey进行区分。

修改 Hash field

# 如果 field 不存在会先创建,否则直接修改该
redis01:6379> hset key field value

# 如果 hash field 已经存在,不做任何修改,返回0(失败)
redis01:6379> hsetnx key field value

# 设置多个 hash field 的值
redis01:6379> hmset key field1 value1 field2 value2 ...

# 递增某个 field 的值
redis01:6379> hincrby key field integer

获取 Hash

# 获取 hash 的某个 field 的值
redis01:6379> hget key field

# 获取 hash 多个 field 的值
redis01:6379> hmget key field1 field2 ...

# 获取 hash 所有 field
redis01:6379> hkeys key

# 获取 hash 所有 value
redis01:6379> hvals key

# 获取 hash 所有 field 和 value
redis01:6379> hgetall key

# 获取 hash field 的数量
redis01:6379> hlen key

# 查看 hash 特定的 field 是否存在
redis01:6379> hexists key field

删除 Hash field

# 删除 hash 特定的 field
redis01:6379> hdel key field

List

Set

ZSet

Bit Arrays

HyperLogLog

HyperLogLog主要解决大数据应用中的非精确计数(可能多也可能少,但是会在一个合理的范围)操作,它可以接受多个元素作为输入,并给出输入元素的基数估算值,基数指的是集合中不同元素的数量。比如 {‘apple’, ‘banana’, ‘cherry’, ‘banana’, ‘apple’} 的基数就是 3 。 HyperLogLog 的优点是,即使输入元素的数量或者体积非常非常大,计算基数所需的空间总是固定的、并且是很小的。在 Redis 里面,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基数。这和计算基数时,元素越多耗费内存就越多的集合形成鲜明对比。但是,因为 HyperLogLog 只会根据输入元素来计算基数,而不会储存输入元素本身,所以 HyperLogLog 不能像集合那样,返回输入的各个元素。

关于这个数据类型的误差:在一个大小为12k的key所存储的hyperloglog集合基数计算的误差是%0.81.

统计

数据备份和恢复

数据备份

# 该命令将在 redis 安装目录中创建 dump.rdb 文件
redis01:6379> save

# 后台运行备份
redis01:6379> bgsave

数据恢复

# 查看 redis 安装目录
redis01:6379> config get dir
1) "dir"
2) "/usr/local/redis/bin"
# 将 dump.rdb 移动到 redis 安装目录,重启 redis 即可
mv dump.rdb /usr/local/redis/bin

DEBUG

# 查看指定 key RedisObject 信息
redis01:6379> debug object <key>

# 查看指定 key RedisObject 某个内部属性
redis01:6379> object <subcommand> arg arg ... arg. Subcommands are:

# 查看使用帮助
redis01:6379> object help
encoding <key> -- return the kind of internal representation used in order to store the value associated with a key.
freq <key> -- return the access frequency index of the key. the returned integer is proportional to the logarithm of the recent access frequency of the key.
idletime <key> -- return the idle time of the key, that is the approximated number of seconds elapsed since the last access to the key.
refcount <key> -- return the number of references of the value associated with the specified key.

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,一毛也是爱

打开支付宝扫一扫,即可进行扫码打赏哦