1、常用命令
INFO:显示当前节点redis运行状态
127.0.0.1:6379> info server
# Server
redis_version:5.0.9
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:6cf2e2ee2f3539a2
redis_mode:standalone
os:Linux 3.10.0-693.el7.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll
atomicvar_api:atomic-builtin
gcc_version:4.8.5
process_id:6332
run_id:7cbc7d1487ca4359faa02a95f57bea1efe3ddfbd
tcp_port:6379
uptime_in_seconds:819
uptime_in_days:0
hz:10
configured_hz:10
lru_clock:831696
executable:/apps/redis/bin/redis-server
config_file:/apps/redis/etc/redis_6379.conf
select:切换数据库(0-15)
注:当使用redis cluster时,就不支持多个数据库了,只支持0号数据库
127.0.0.1:6379[15]> select 0
OK
127.0.0.1:6379> select 16
(error) ERR DB index is out of range
keys:查看所有key(禁止使用)
BGSAVE:手动备份RDB文件
# 交互式
127.0.0.1:6379> bgsave
Background saving started
127.0.0.1:6379>
# 非交互式
[root@vms228 ~]# redis-cli -a redis --no-auth-warning bgsave
Background saving started
DBSIZE:查看key的数量
FLUSHDB(慎用):删除当前库所有key
FLUSHALL(慎用):删除所有库的所有key
SHUTDOWN:正常关闭redis(安全),关闭之前会持久化数据。
2、数据类型
2.1、字符串
EX seconds : 将键的过期时间设置为 seconds 秒。 执行 SET key value EX seconds 的效果等
同于执行 SETEX key seconds value 。
PX milliseconds : 将键的过期时间设置为 milliseconds 毫秒。 执行 SET key value PX
milliseconds 的效果等同于执行 PSETEX key milliseconds value 。
NX : 只在键不存在时, 才对键进行设置操作。 执行 SET key value NX 的效果等同于执行 SETNX
key value 。
XX : 只在键已经存在时, 才对键进行设置操作。
2.1.1、set\get
# 设置key-value
127.0.0.1:6379> set class linux
OK
# 获取key-value
127.0.0.1:6379> get class
"linux"
2.1.2、获取key的有效期
127.0.0.1:6379> ttl class
(integer) -1
2.1.3、设置key-value有效期EX
127.0.0.1:6379> set hongbao 100 EX 10
OK
127.0.0.1:6379> ttl hongbao
(integer) 6
127.0.0.1:6379> ttl hongbao
(integer) -2
127.0.0.1:6379> get hongbao
(nil)
2.1.4、当key的value之存在时执行 XX
127.0.0.1:6379> get class
"linux"
127.0.0.1:6379> set class linux2 XX
OK
127.0.0.1:6379> get class
"linux2"
2.1.5、当key的value值不存在时执行 NX
127.0.0.1:6379> set class linux3 NX
(nil)
127.0.0.1:6379> get class
"linux2"
2.1.6、查看key类型
127.0.0.1:6379> type class
string
2.1.7、删除一个或多个key
127.0.0.1:6379> del k1
(integer) 1
127.0.0.1:6379> del k2 k3
(integer) 2
2.1.8、批量插入、获取mset/mget
127.0.0.1:6379> mset k1 v1 k2 v2
OK
127.0.0.1:6379> mget k1 k2
1) "v1"
2) "v2"
2.1.9、追加value值:append
127.0.0.1:6379> get k2
"v2"
127.0.0.1:6379> append k2 " append"
(integer) 9
127.0.0.1:6379> get k2
"v2 append"
127.0.0.1:6379>
2.1.10、设置新值并返回旧值:getset
127.0.0.1:6379> getset k4 newv4
"v4"
127.0.0.1:6379> get k4
"newv4"
2.1.11、返回value对应字节数(字母->1字节,汉字->3字节)
127.0.0.1:6379> strlen name
(integer) 6
127.0.0.1:6379> strlen age
(integer) 2
127.0.0.1:6379> get name
"\xe5\xb0\x8f\xe6\x98\x8e"
2.1.12、判断key是否存在:exists
127.0.0.1:6379> exists v1
(integer) 0
127.0.0.1:6379> exists k1
(integer) 1
127.0.0.1:6379> exists k1 k2
(integer) 2
127.0.0.1:6379> exists k1 k2 k3
(integer) 3
2.1.13、获取key有效期:ttl(-1:永久生效,-2不存在key)
127.0.0.1:6379> set name zzj EX 100
OK
127.0.0.1:6379> ttl name
(integer) 96
127.0.0.1:6379> ttl k1
(integer) -1
127.0.0.1:6379> ttl aaa
(integer) -2
2.1.14、更改key有效期:expire
127.0.0.1:6379> set name zzj EX 100 NX
OK
127.0.0.1:6379> ttl name
(integer) 92
127.0.0.1:6379> expire name 1000
(integer) 1
127.0.0.1:6379> ttl name
(integer) 996
2.1.15、设置永不过期:persist
127.0.0.1:6379> ttl name
(integer) 996
127.0.0.1:6379> persist name
(integer) 1
127.0.0.1:6379> ttl name
(integer) -1
2.1.16、设置递增/递减(+1 -1):incr\decr
#注:如果不设置num值,默认为0
127.0.0.1:6379> INCR num
(integer) 1
127.0.0.1:6379> get num
"1"
127.0.0.1:6379> DECR num
(integer) 0
127.0.0.1:6379> get num
"0"
2.1.17、数值加减:incrby\decrby
127.0.0.1:6379> INCRBY num2 15
(integer) 15
127.0.0.1:6379> get num2
"15"
127.0.0.1:6379> DECRBY num2 10
(integer) 5
127.0.0.1:6379> get num2
"5"
2.2、列表(双向可读写的管道,一个列表最多可以包含2^32-1个元素)
2.2.1、lpush和rpush
# cba
127.0.0.1:6379> lpush llist a b c
(integer) 3
# abc
127.0.0.1:6379> rpush rlist a b c
(integer) 3
127.0.0.1:6379> type llist
list
2.2.2、获取列表个数:llen
127.0.0.1:6379> LLEN llist
(integer) 3
2.2.3、获取指定位置数据:lindex
127.0.0.1:6379> rpush list a b c d
(integer) 4
127.0.0.1:6379> lindex list 0
"a"
127.0.0.1:6379> lindex list 3
"d"
127.0.0.1:6379> lindex list -1
"d"
2.2.4、获取指定范围数据:lrange
127.0.0.1:6379> rpush list a b c d
(integer) 4
127.0.0.1:6379> lrange list 1 2
1) "b"
2) "c"
127.0.0.1:6379> lrange list 0 -1
1) "a"
2) "b"
3) "c"
4) "d"
2.2.5、修改指定位置值lset
127.0.0.1:6379> lrange list 0 -1
1) "a"
2) "b"
3) "c"
4) "d"
127.0.0.1:6379> lset list 0 a1
OK
127.0.0.1:6379> lrange list 0 -1
1) "a1"
2) "b"
3) "c"
4) "d"
2.2.6、移除列表数据:lpop、rpop
127.0.0.1:6379> lrange list 0 -1
1) "a1"
2) "b"
3) "c"
4) "d"
127.0.0.1:6379> lpop list
"a1"
127.0.0.1:6379> rpop list
"d"
127.0.0.1:6379> lrange list 0 -1
1) "b"
2) "c"
2.2.7、截取列表:ltrim
127.0.0.1:6379> rpush list a b c d
(integer) 4
127.0.0.1:6379> ltrim list 1 2
OK
127.0.0.1:6379> lrange list 0 -1
1) "b"
2) "c"
2.3、集合set(无序且唯一)
2.3.1、生成集合:sadd
127.0.0.1:6379> SADD set1 a
(integer) 1
127.0.0.1:6379> SADD set2 a b c
(integer) 3
127.0.0.1:6379> type set1
set
2.3.2、追加数值:sadd(不能追加已存在的数值)
127.0.0.1:6379> SADD set1 b c d
(integer) 3
127.0.0.1:6379> SADD set1 b
(integer) 0
2.3.3、查看集合内所有元素smembers
127.0.0.1:6379> smembers set1
1) "d"
2) "c"
3) "b"
4) "a"
2.3.4、删除集合中的元素:srem
127.0.0.1:6379> smembers set1
1) "d"
2) "c"
3) "b"
4) "a"
127.0.0.1:6379> srem set1 c
(integer) 1
127.0.0.1:6379> smembers set1
1) "b"
2) "a"
3) "d"
2.3.5、集合交、并、差(sinter sunion sdiff)
127.0.0.1:6379> sadd set1 a b c d
(integer) 4
127.0.0.1:6379> sadd set2 a e c u
(integer) 4
127.0.0.1:6379> sinter set1 set2
1) "c"
2) "a"
127.0.0.1:6379> sdiff set1 set2
1) "d"
2) "b"
127.0.0.1:6379> sdiff set2 set1
1) "u"
2) "e"
127.0.0.1:6379> sunion set1 set2
1) "c"
2) "e"
3) "d"
4) "u"
5) "b"
6) "a"
2.4、有序集合(有序且不重复,每个元素是由score和value组成,score可以重复,value不可以重复)
2.4.1、生成有序集合zadd
127.0.0.1:6379> ZADD paihangbang 90 nezha 199 zhanlang 60 zhuluoji 30 gangtiexia
(integer) 4
2.4.2、打印有序集合zrange、zrevrange、withscores
# 从低到高,正序
127.0.0.1:6379> zrange paihangbang 0 -1
1) "gangtiexia"
2) "zhuluoji"
3) "nezha"
4) "zhanlang"
# 从高到低,倒序
127.0.0.1:6379> zrevrange paihangbang 0 -1
1) "zhanlang"
2) "nezha"
3) "zhuluoji"
4) "gangtiexia"
# score和value一起显示
127.0.0.1:6379> zrange paihangbang 0 -1 withscores
1) "gangtiexia"
2) "30"
3) "zhuluoji"
4) "60"
5) "nezha"
6) "90"
7) "zhanlang"
8) "199"
2.4.3、获取集合元素个数:zcard
127.0.0.1:6379> zcard paihangbang
(integer) 4
2.4.4、返回某个数值的索引zrank
127.0.0.1:6379> zrange paihangbang 0 -1
1) "gangtiexia"
2) "zhuluoji"
3) "nezha"
4) "zhanlang"
127.0.0.1:6379> zrank paihangbang nezha
(integer) 2
2.4.5、获取指定数值的分数zscore
127.0.0.1:6379> zscore paihangbang nezha
"90"
2.4.6、删除元素:zrem
127.0.0.1:6379> zrange paihangbang 0 -1
1) "gangtiexia"
2) "zhuluoji"
3) "nezha"
4) "zhanlang"
127.0.0.1:6379> zrem paihangbang gangtiexia zhuluoji
(integer) 2
127.0.0.1:6379> zrange paihangbang 0 -1
1) "nezha"
2) "zhanlang"
2.5、哈希(string类型的字段(field)和值(value)的映射表)
2.5.1、生成hash key
# 格式:hset key field value
如果给定的哈希表并不存在, 那么一个新的哈希表将被创建并执行 HSET 操作。
如果域 field 已经存在于哈希表中, 那么它的旧值将被新值 value 覆盖。
127.0.0.1:6379> hset info name zzj age 23 city nanjing sex man
(integer) 4
127.0.0.1:6379> hset info name zhaozhijie age 23 city nanjing sex man
(integer) 0
127.0.0.1:6379> hgetall info
1) "name"
2) "zhaozhijie"
3) "age"
4) "23"
5) "city"
6) "nanjing"
7) "sex"
8) "man"
2.5.2、查看所有字段的值:hgetall
127.0.0.1:6379> hgetall info
1) "name"
2) "zhaozhijie"
3) "age"
4) "23"
5) "city"
6) "nanjing"
7) "sex"
8) "man"
2.5.3、增加字段:hset
127.0.0.1:6379> hset info height 175
(integer) 1
127.0.0.1:6379> hgetall info
1) "name"
2) "zhaozhijie"
3) "age"
4) "23"
5) "city"
6) "nanjing"
7) "sex"
8) "man"
9) "height"
10) "175"
2.5.4、获取对应字段的值hget
127.0.0.1:6379> hget info name
"zhaozhijie"
127.0.0.1:6379> hget info age
"23"
2.5.5、删除一个hash key对应的字段
127.0.0.1:6379> hdel info height
(integer) 1
127.0.0.1:6379> hgetall info
1) "name"
2) "zhaozhijie"
3) "age"
4) "23"
5) "city"
6) "nanjing"
7) "sex"
8) "man"
2.5.6、获取hash中所有的字段field
127.0.0.1:6379> hkeys info
1) "name"
2) "age"
3) "city"
4) "sex"
2.5.7、获取hash key对应的所有field的value
127.0.0.1:6379> hvals info
1) "zhaozhijie"
2) "23"
3) "nanjing"
4) "man"
2.5.8、删除hash
127.0.0.1:6379> del info
(integer) 1