Redis基础命令

基本命令

1. ​​select​​ 切换数据库

127.0.0.1:6379> select 2
OK
127.0.0.1:6379[2]>


2. ​​dbsize​​ 查看DB大小

127.0.0.1:6379[2]> dbsize
(integer) 0
127.0.0.1:6379[2]>


3. ​​Keys *​​ 查看当前库中所有的key

127.0.0.1:6379[2]> set a 123
OK
127.0.0.1:6379[2]> set b 222
OK
127.0.0.1:6379[2]> keys *
1) "a"
2) "b"
127.0.0.1:6379[2]>


4. ​​flushdb​​ 清空当前库

127.0.0.1:6379[2]> flushdb
OK
127.0.0.1:6379[2]> keys *
(empty array)
127.0.0.1:6379[2]>


5. ​​flushall​​ 清空所有库

127.0.0.1:6379[2]> flushall
OK
127.0.0.1:6379[2]>


6. ​​exists​​ 判断key是否存在

127.0.0.1:6379[2]> set a 123
OK
127.0.0.1:6379[2]> set b 222
OK
127.0.0.1:6379[2]> exists a
(integer) 1 # 存在返回1
127.0.0.1:6379[2]> exists c
(integer) 0 # 不存在返回0
127.0.0.1:6379[2]>


7. ​​expire​​ 设置key的过期时间

127.0.0.1:6379[2]> expire a 30   # 单位是秒
(integer) 1


8. ​​ttl​​ 查看key的剩余过期时间

127.0.0.1:6379[2]> ttl a
(integer) 28
127.0.0.1:6379[2]> ttl a
(integer) 26
127.0.0.1:6379[2]> ttl b
(integer) -1 # -1 没有过期时间,不会过期
127.0.0.1:6379[2]>


9. ​​type​​查看key的类型

127.0.0.1:6379[2]> type b
string
127.0.0.1:6379[2]>


10. ​​info replication​​ 查看当前库主从信息

127.0.0.1:6379> info replication
# Replication
role:master # 当前角色
connected_slaves:0 # 没有从机
master_failover_state:no-failover
master_replid:dd97240949f1c206a54a3d5513eda5ea59b17703
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
127.0.0.1:6379>


11. ​​SLAVEOF ​​ 选择主机

SLAVEOF ip地址 端口号


字符串相关命令

1. ​​set​​ 设置值

127.0.0.1:6379> set a 123
OK
127.0.0.1:6379>


2. ​​get​​ 获取值

127.0.0.1:6379> get a
"123"
127.0.0.1:6379>


3. ​​append​​ 追加字符串

# 当key不存的时候会自动创建
127.0.0.1:6379> append a abc
(integer) 6
127.0.0.1:6379> append c 222
(integer) 3
127.0.0.1:6379> get a
"123abc"
127.0.0.1:6379> get c
"222"
127.0.0.1:6379>


4. ​​strlen​​ 获取字符串的长度

127.0.0.1:6379> strlen a
(integer) 6
127.0.0.1:6379>


5. ​​incr​​ 自增1

127.0.0.1:6379> set views 0
OK
127.0.0.1:6379> get views
"0"
127.0.0.1:6379> incr views
(integer) 1
127.0.0.1:6379> get views
"1"
127.0.0.1:6379> incr evi # 不存在的key会自增成为1
(integer) 1
127.0.0.1:6379> get evi
"1"
127.0.0.1:6379>


6. ​​decr​​ 自减1

127.0.0.1:6379> get views
"1"
127.0.0.1:6379> decr views
(integer) 0
127.0.0.1:6379> decr views
(integer) -1
127.0.0.1:6379> get views
"-1"
127.0.0.1:6379>


7.​​incrby​​ 自增指定步长

127.0.0.1:6379> incrby views 5
(integer) 4
127.0.0.1:6379> get views
"4"
127.0.0.1:6379>


8. ​​decrby​​ 自减指定步长

127.0.0.1:6379> get views
"4"
127.0.0.1:6379> decrby views 4
(integer) 0
127.0.0.1:6379>


9. ​​getrange​​ 获取字符串范围

127.0.0.1:6379> set a zheshiyigezifuc
OK
127.0.0.1:6379> get a
"zheshiyigezifuc"
127.0.0.1:6379> getrange a 0 3
"zhes"
127.0.0.1:6379>


10.​​setrange​​ 指定位置开始替换字符串

127.0.0.1:6379> get a
"thishiyigezifuc" # 原字符串 zheshiyigezifuc
127.0.0.1:6379>


11. ​​setex​​ 设置过期时间

127.0.0.1:6379> setex b 30 "this is a book" # 单位是秒
OK
127.0.0.1:6379> ttl b
(integer) 27
127.0.0.1:6379>


12. ​​setnx​​ 不存在在设置

127.0.0.1:6379> setnx a 123 
(integer) 0 # a是存在的,所以设置失败
127.0.0.1:6379> setnx c 222
(integer) 1 # c 不存在,设置成功
127.0.0.1:6379>


13. ​​mset​​同时设置多个值

127.0.0.1:6379> flushall
OK
127.0.0.1:6379> mset a 1 b 2 c 3
OK
127.0.0.1:6379> keys *
1) "a"
2) "c"
3) "b"
127.0.0.1:6379>


14. ​​mget​​ 同时获取多个值

127.0.0.1:6379> mget a b c 
1) "1"
2) "2"
3) "3"
127.0.0.1:6379>


15. ​​msetnx​​ 如果有一个值存在,就会设置不成功

127.0.0.1:6379> keys *
1) "a"
2) "c"
3) "b"
127.0.0.1:6379> msetnx d 5 e 6
(integer) 1
127.0.0.1:6379> msetnx e 6 f 7
(integer) 0
127.0.0.1:6379>


15. ​​getset​​ 先获取在设置

127.0.0.1:6379> get a
"1"
127.0.0.1:6379> getset a 1122 # 先获取在设置
"1"
127.0.0.1:6379> get a
"1122"
127.0.0.1:6379> getset abc 123 # 不存在的返回nil
(nil)
127.0.0.1:6379> get abc
"123"
127.0.0.1:6379>


list列表相关命令

1. ​​lpush​​ 将一个或多个值插入到列表左边

127.0.0.1:6379> lpush list 1 # 插入一个值
(integer) 1
127.0.0.1:6379> lpush list 2 3 # 插入多个值
(integer) 3
127.0.0.1:6379>


2. ​​lrange​​ 获取list中的值

127.0.0.1:6379> lrange list 0 1
1) "3"
2) "2"
127.0.0.1:6379> lrange list 0 -1
1) "3"
2) "2"
3) "1"


3. ​​rpush​​ 将一个值或多个值插入到列表右边

127.0.0.1:6379> lrange list 0 -1
1) "3"
2) "2"
3) "1"
127.0.0.1:6379> rpush list 0
(integer) 4
127.0.0.1:6379> lrange list 0 -1
1) "3"
2) "2"
3) "1"
4) "0"
127.0.0.1:6379>


4. ​​lpop​​ 移除列表左边第一个或指定个数元素

127.0.0.1:6379> lrange list 0 -1
1) "3"
2) "2"
3) "1"
4) "0"
127.0.0.1:6379> lpop list # 移除左边第一个
"3"
127.0.0.1:6379> lrange list 0 -1
1) "2"
2) "1"
3) "0"
127.0.0.1:6379> lpop list 2 # 移除左边两个
1) "2"
2) "1"
127.0.0.1:6379>


5. ​​rpop​​ 移除列表右边第一个或指定个数元素

127.0.0.1:6379> lrange list 0 -1
1) "6"
2) "5"
3) "4"
4) "3"
5) "2"
6) "1"
127.0.0.1:6379> rpop list
"1"
127.0.0.1:6379> lrange list 0 -1
1) "6"
2) "5"
3) "4"
4) "3"
5) "2"
127.0.0.1:6379> rpop list 3
1) "2"
2) "3"
3) "4"
127.0.0.1:6379> lrange list 0 -1
1) "6"
2) "5"
127.0.0.1:6379>


6. ​​lindex​​通过下标获取列表中的值

127.0.0.1:6379> lrange list 0 -1
1) "6"
2) "5"
127.0.0.1:6379> lindex list 1
"5"
127.0.0.1:6379>


7. ​​llen​​获取列表长度

127.0.0.1:6379> llen list
(integer) 2
127.0.0.1:6379>


8. ​​lrem​​移除集合中指定个数的元素

127.0.0.1:6379> lpush list 1 2 3 1 2
(integer) 5
127.0.0.1:6379> lrange list 0 -1
1) "2"
2) "1"
3) "3"
4) "2"
5) "1"
127.0.0.1:6379> lrem list 1 1 # 从左边开始移除一个1
(integer) 1
127.0.0.1:6379> lrange list 0 -1
1) "2"
2) "3"
3) "2"
4) "1"
127.0.0.1:6379> lrem list 2 2 # 从左边开始移除2个2
(integer) 2
127.0.0.1:6379> lrange list 0 -1
1) "3"
2) "1"
127.0.0.1:6379>


9. ​​ltrim​​ 通过下标留下指定长度的元素

127.0.0.1:6379> lrange list 0 -1
1) "6"
2) "5"
3) "4"
4) "3"
5) "1"
127.0.0.1:6379> ltrim 1 2
127.0.0.1:6379> ltrim list 1 2 # 从index第1个开始,留下两个,但不包括index为1的值
OK
127.0.0.1:6379> lrange list 0 -1
1) "5"
2) "4"
127.0.0.1:6379>


10. ​​rpoplpush​​将列表最后一个元素移动到新列表中

127.0.0.1:6379> lpush list 1 2 3 4 5 
(integer) 5
127.0.0.1:6379> rpoplpush list list1
"1"
127.0.0.1:6379> lrange list1 0 -1
1) "1"
127.0.0.1:6379>


11. ​​lset​​设置列表中指定index的值

127.0.0.1:6379> lpush list 1 2 3 4 
(integer) 4
127.0.0.1:6379> lset list 0 0
OK
127.0.0.1:6379> lrange list 0 -1
1) "0"
2) "3"
3) "2"
4) "1"
127.0.0.1:6379>


12. ​​linsert​​将具体的值插入到某个元素的前面或后面

127.0.0.1:6379> lrange list 0 -1
1) "0"
2) "3"
3) "2"
4) "1"
127.0.0.1:6379> linsert list before 1 h # 将h插在1前边
(integer) 5
127.0.0.1:6379> lrange list 0 -1
1) "0"
2) "3"
3) "2"
4) "h"
5) "1"
127.0.0.1:6379> linsert list after 3 hel # 将hel插在3后边
(integer) 6
127.0.0.1:6379> lrange list 0 -1
1) "0"
2) "3"
3) "hel"
4) "2"
5) "h"
6) "1"
127.0.0.1:6379>


set集合相关命令

1. ​​sadd​​ 在集合中添加元素

127.0.0.1:6379> sadd set 1
(integer) 1
127.0.0.1:6379> sadd set 2 3 # 一次添加多个元素
(integer) 2
127.0.0.1:6379>


2. ​​smembers​​ 查看集合中所有的元素

127.0.0.1:6379> smembers set
1) "1"
2) "2"
3) "3"
127.0.0.1:6379>


3. ​​sismember​​ 判断某一个值是否是这个集合的

127.0.0.1:6379> sismember set 1
(integer) 1
127.0.0.1:6379> sismember set 6
(integer) 0 # 不属于该集合
127.0.0.1:6379>


4. ​​scard​​ 获取集合中的元素个数

127.0.0.1:6379> scard set
(integer) 3
127.0.0.1:6379>


5. ​​srem​​ 移除集合中的某个元素

127.0.0.1:6379> srem set 1
(integer) 1
127.0.0.1:6379>


6. ​​srandmember​​ 随机获取元素

127.0.0.1:6379> srandmember set # 随机获取一个元素
"3"
127.0.0.1:6379> srandmember set 2 # 随机获取两个元素
1) "2"
2) "3"
127.0.0.1:6379>


7. ​​spop​​ 随机删除一个元素

127.0.0.1:6379> smembers set
1) "2"
2) "3"
127.0.0.1:6379> spop set
"2"
127.0.0.1:6379> smembers set
1) "3"
127.0.0.1:6379>


8. ​​smove​​ 将集合中的指定元素移动到另外一个集合中

127.0.0.1:6379> sadd set 1 2 3 4 5 
(integer) 5
127.0.0.1:6379> smove set set1 1
(integer) 1
127.0.0.1:6379> smembers set1
1) "1"
127.0.0.1:6379>


9. ​​sdiff​​差集

127.0.0.1:6379> sadd set 1 2 3 4 5
(integer) 5
127.0.0.1:6379> sadd set1 4 3 6 7 8
(integer) 5
127.0.0.1:6379> sdiff set set1
1) "1"
2) "2"
3) "5"
127.0.0.1:6379>


10. ​​sinter​​ 交集

127.0.0.1:6379> sinter set set1
1) "3"
2) "4"
127.0.0.1:6379>


11. ​​sunion​​并集

127.0.0.1:6379> sunion set set1
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
7) "7"
8) "8"
127.0.0.1:6379>


hash哈希相关命令

1. ​​hset​​设置一个key-value

127.0.0.1:6379> hset hash key1 value1
(integer) 1
127.0.0.1:6379>


2. ​​hget​​获取一个hash字段值

127.0.0.1:6379> hget hash key1
"value1"
127.0.0.1:6379>


3. ​​hmset​​ 一次设置多个

127.0.0.1:6379> hmset hash key2 value2 key3 value3
OK
127.0.0.1:6379>


4. ​​hmget​​ 一次获取多个

127.0.0.1:6379> hmget hash key1 key2
1) "value1"
2) "value2"
127.0.0.1:6379>


5. ​​hgetall​​ 获取全部的

127.0.0.1:6379> hgetall hash
1) "key1"
2) "value1"
3) "key2"
4) "value2"
5) "key3"
6) "value3"
127.0.0.1:6379>


6. ​​hdel​​ 删除指定的

127.0.0.1:6379> hdel hash key1
(integer) 1
127.0.0.1:6379>


7. ​​hlen​​ 获取hash数量

127.0.0.1:6379> hlen hash
(integer) 2
127.0.0.1:6379>


8. ​​hkeys​​获取所有hash中的键

127.0.0.1:6379> hkeys hash
1) "key2"
2) "key3"
127.0.0.1:6379>


9. ​​hvals​​获取所有的值

127.0.0.1:6379> hvals hash
1) "value2"
2) "value3"
127.0.0.1:6379>


10. ​​hincrby​​自增

127.0.0.1:6379> hset hash key 1
(integer) 1
127.0.0.1:6379> hincrby hash key 1
(integer) 2
127.0.0.1:6379> hincrby hash key -2
(integer) 0
127.0.0.1:6379>


11. ​​hsetnx​​ 如果不存在就可以创建

127.0.0.1:6379> hsetnx hash key 2
(integer) 0
127.0.0.1:6379> hsetnx hash key2 1
(integer) 1
127.0.0.1:6379>


zset有序集合相关命令

1.​​zadd​​ 添加一个值

127.0.0.1:6379> zadd set 1 a
(integer) 1
127.0.0.1:6379> zadd set 2 b 3 c # 添加多个值
(integer) 2
127.0.0.1:6379>


2.​​zrange​​ 获取集合中的值

127.0.0.1:6379> zrange set 0 -1
1) "a"
2) "b"
3) "c"
127.0.0.1:6379>


3. ​​zrangebyscore​​从小到达排序

127.0.0.1:6379> zadd salary 2500 zhangsan 5000 lisi 3000 wangwu
(integer) 3
127.0.0.1:6379> zrangebyscore salary -inf +inf
1) "zhangsan"
2) "wangwu"
3) "lisi"
127.0.0.1:6379>


4. ​​zrevrange​​ 从大到小排序

127.0.0.1:6379> zrevrange salary 0 -1
1) "lisi"
2) "wangwu"
3) "zhangsan"
127.0.0.1:6379>


5.​​zrem​​移除指定元素

127.0.0.1:6379> zrem salary lisi
(integer) 1
127.0.0.1:6379>


6.​​zcard​​ 获取有序集合个数

127.0.0.1:6379> zcard salary
(integer) 2
127.0.0.1:6379>


Geospatial 地理位置相关命令

1.​​geoadd​​ 添加一个经纬度

有效的经度从-180度到180度。

有效的纬度从-85.05112878度到85.05112878度。

127.0.0.1:6379> geoadd city 116.405285 39.904989 beijing
(integer) 1
127.0.0.1:6379> geoadd city 116.36003 39.9305 xicheng 116.2229 39.90564 shijingshan # 一次添加多个
(integer) 2
127.0.0.1:6379>


2. ​​geopos​​ 获取坐标值

127.0.0.1:6379> geopos city beijing
1) 1) "116.40528291463851929"
2) "39.9049884229125027"
127.0.0.1:6379> geopos city beijing shijingshan
1) 1) "116.40528291463851929"
2) "39.9049884229125027"
2) 1) "116.22289806604385376"
2) "39.90563984625044469"
127.0.0.1:6379>


3. ​​geodist​​两个坐标之间的距离

  • m 米
  • km 千米
  • mi 英里
  • ft英尺
127.0.0.1:6379> geodist city beijing shijingshan m
"15561.6651"
127.0.0.1:6379> geodist city beijing shijingshan km
"15.5617"
127.0.0.1:6379>


4. ​​georadius​​ 获取附近位置通过半径查找

127.0.0.1:6379> georadius city 116.40528291463851929 39.9049884229125027 10 km # 10km为半径 116.40528291463851929经度 39.9049884229125027 纬度
1) "beijing"
2) "xicheng"
127.0.0.1:6379> georadius city 116.40528291463851929 39.9049884229125027 1 km
1) "beijing"
127.0.0.1:6379> georadius city 116.40528291463851929 39.9049884229125027 10 km withdist # 显示距离
1) 1) "beijing"
2) "0.0000"
2) 1) "xicheng"
2) "4.7912" # 距离中心多远
127.0.0.1:6379> georadius city 116.40528291463851929 39.9049884229125027 10 km withdist withcoord # 在加上显示经纬度
1) 1) "beijing"
2) "0.0000"
3) 1) "116.40528291463851929"
2) "39.9049884229125027"
2) 1) "xicheng"
2) "4.7912"
3) 1) "116.36002868413925171"
2) "39.93050039138125129"
127.0.0.1:6379> georadius city 116.40528291463851929 39.9049884229125027 10 km withdist withcoord count 1 # 在加上获取个数
1) 1) "beijing"
2) "0.0000"
3) 1) "116.40528291463851929"
2) "39.9049884229125027"
127.0.0.1:6379>


5. ​​georadiusbymember​​ 根据地理名称获取周围的信息

127.0.0.1:6379> georadiusbymember city beijing 10 km
1) "beijing"
2) "xicheng"
127.0.0.1:6379>


6. ​​geohash​​ 返回一个或多个元素的gohash标识

127.0.0.1:6379> geohash city beijing
1) "wx4g0b7xrt0"
127.0.0.1:6379> geohash city beijing shijingshan
1) "wx4g0b7xrt0"
2) "wx4eh8wgjy0"
127.0.0.1:6379>


hyperloglog 相关命令

1. ​​pfadd​​ 创建一组元素

127.0.0.1:6379> pfadd key a b c d e 
(integer) 1
127.0.0.1:6379>


2. ​​pfcount​​ 统计基数数量

127.0.0.1:6379> pfcount key 
(integer) 5
127.0.0.1:6379>


3. ​​pfmerge​​ 合并两组

127.0.0.1:6379> pfcount key
(integer) 9
127.0.0.1:6379> pfadd key1 a b c h l m n
(integer) 1
127.0.0.1:6379> pfmerge key3 key key1
OK
127.0.0.1:6379> pfcount key3
(integer) 13
127.0.0.1:6379>


bitmap 相关命令

1. ​​setbit​​ 设置

127.0.0.1:6379> setbit zhangsan 1 0
(integer) 0
127.0.0.1:6379> setbit zhangsan 2 0
(integer) 0
127.0.0.1:6379> setbit zhangsan 3 1
(integer) 0
127.0.0.1:6379>


2. ​​getbit​​ 获取

127.0.0.1:6379> getbit zhangsan 1
(integer) 0
127.0.0.1:6379> getbit zhangsan 3
(integer) 1
127.0.0.1:6379>


事务相关命令

1. ​​multi​​ 开启事务

127.0.0.1:6379> multi
OK
127.0.0.1:6379(TX)> set key 1
QUEUED
127.0.0.1:6379(TX)> set key1 2
QUEUED
127.0.0.1:6379(TX)>


2. ​​exec​​ 执行事务

127.0.0.1:6379(TX)> exec
1) OK
2) OK
127.0.0.1:6379> get key
"1"
127.0.0.1:6379>


3. ​​discard​​ 放弃事务

127.0.0.1:6379> multi
OK
127.0.0.1:6379(TX)> set a 123
QUEUED
127.0.0.1:6379(TX)> discard
OK
127.0.0.1:6379> get a
(nil)
127.0.0.1:6379>