Redis 常用命令使用

默认16个数据库,类似数组下标从零开始,初始默认使用零号库

redis 整体命令

127.0.0.1:6379> select 0        # 使用0 号数据库
OK
127.0.0.1:6379> keys *          # 查看当前数据库中所有键的集合
(empty array) 
127.0.0.1:6379> dbsize          # 查看当前数据库的key的数量
(integer) 0
127.0.0.1:6379> flushall        # 清空全部的库
OK
127.0.0.1:6379> flushdb         # 清空当前库
OK
127.0.0.1:6379> set name zhaomingming  # 设置值
OK
127.0.0.1:6379> get name        # 获取值
"zhaomingming"
127.0.0.1:6379> exists name     # 查看这个键是否存在,1表示存在,0 表示不存在
(integer) 1
127.0.0.1:6379> exists name10
(integer) 0
127.0.0.1:6379> expire name 10  # 给这个键设置过期时间,单位是秒
(integer) 1
127.0.0.1:6379> ttl name        # 查看这个键还有多少秒就过期
(integer) 6
127.0.0.1:6379> get name         
"zhaomingming"
127.0.0.1:6379> ttl name
(integer) 0
127.0.0.1:6379> get name        # 这次获取值,值已经为空
(nil)
127.0.0.1:6379> type name       # 查看这个键的类型
string
127.0.0.1:6379> 

字符串String

127.0.0.1:6379> set name zhaoming    # 设置值
OK
127.0.0.1:6379> get name             # 根据key 获取值
"zhaoming"
127.0.0.1:6379> del name             # 根据名字删除这个键值对,返回1 表示删除成功
(integer) 1
127.0.0.1:6379> get name
(nil)
127.0.0.1:6379> exists name          # 查看这个key 是否存在
(integer) 0
127.0.0.1:6379> append name hello    # 对不存在的key 进行拼接操作,相当于 set name hello
(integer) 5                          # 表示插入的字节数
127.0.0.1:6379> append name world    # 对原有的key 拼接,返回拼接后的key 字节数
(integer) 10
127.0.0.1:6379> get name
"helloworld"
127.0.0.1:6379> strlen name          # 查看这个key 的长度(字节数)
(integer) 10

# 当值 是数字时,对这个值进行操作

127.0.0.1:6379> set views 0          # 设置值
OK
127.0.0.1:6379> incr views           # 对这个值进行自增(+1)
(integer) 1
127.0.0.1:6379> incr views           # 对这个值进行自增(+1)
(integer) 2
127.0.0.1:6379> incr views           # 对这个值进行自增(+1)
(integer) 3
127.0.0.1:6379> decr views           # 对这个值进行自减(-1)
(integer) 2
127.0.0.1:6379> decr views           # 对这个值进行自减(-1)
(integer) 1
127.0.0.1:6379> incrby views 10      # 将 key 中储存的数字加上指定的增量值(加)。
(integer) 11
127.0.0.1:6379> decrby views 10      # 将 key 中储存的数字加上指定的增量值(减)。
(integer) 1
127.0.0.1:6379> get views
"1"
127.0.0.1:6379> set key abcd123456
OK
127.0.0.1:6379> getrange key 0 -1。  # 按照索引查看这个字符串(-1 表示查看所有)
"abcd123456"
127.0.0.1:6379> getrange key 0 2     # 从索引0到索引2处查看对应的元素,
"abc"
127.0.0.1:6379> get key
"abcd123456"
127.0.0.1:6379> setrange key 4 efghijk    # 指定索引的位置并设置值
(integer) 11
127.0.0.1:6379> get key
"abcdefghijk"
127.0.0.1:6379> setex key1 60 expire      # 查看这个字符串是否存在,并为这个字符串设置过期时间,单位是秒s
OK
127.0.0.1:6379> ttl key1                  # 查看还有多少秒过期
(integer) 54
127.0.0.1:6379> setnx key2 redis          # 如果这个字符串不存在,则设置它为指定值
(integer) 1
127.0.0.1:6379> setnx key2 mongodb        # 此时返回的是0,表示设置失败,因为这个key已存在
(integer) 0
127.0.0.1:6379> get key2
"redis"
127.0.0.1:6379> mset k10 v10 k11 v11 k12 v12      # 批量设置键值对
OK
127.0.0.1:6379> keys *                    # 查看所有键  
1) "views"
2) "k10"
3) "key"
4) "key2"
5) "k12"
6) "k11"
7) "name"
127.0.0.1:6379> mget k10 k11 k12          # 批量获取指定的键对应的值
1) "v10"
2) "v11"
3) "v12"
127.0.0.1:6379> msetnx k10 v10 k15 v15    # 原子性操作!msetnx 如果不存在则设置
(integer) 0
127.0.0.1:6379> get key15                 # 因为k10 已存在,连累了k15,不能设置成功
(nil)
127.0.0.1:6379> mset user:1:name zhangsan user:1:age 2    # 设置对象
OK
127.0.0.1:6379> mget user:1:name          # 获取对象中的值
1) "zhangsan"
127.0.0.1:6379> mget user:1:name user:1:age    # 可以多值获取
1) "zhangsan"
2) "2"
127.0.0.1:6379> getset db mongodb         # 设置值,并获取旧值,如果没有这个键,则返回null
(nil)
127.0.0.1:6379> getset db mongodb         # 这次可以获取到了
"mongodb"
127.0.0.1:6379> get db            
"mongodb"
127.0.0.1:6379> getset db redis           # 获取之前的值,并设置新值
"mongodb"
127.0.0.1:6379> get db
"redis"
127.0.0.1:6379> 

String数据结构是简单的key-value类型,value其实不仅可以是String,也可以是数字。

常规key-value缓存应用:

常规计数:微博数,粉丝数等。

列表List

127.0.0.1:6379> lpush list one        # 从左边插入元素,先进后出
(integer) 1
127.0.0.1:6379> lpush list two        # 给名为list 的集合添加元素
(integer) 2
127.0.0.1:6379> lpush list three      # 添加元素
(integer) 3
127.0.0.1:6379> rpush list right      # 从右边添加元素,先添加的永远在最里面
(integer) 4
127.0.0.1:6379> lrange list 0 -1      # 查看这个集合中的全部元素
1) "three"
2) "two"
3) "one"
4) "right"
127.0.0.1:6379> lrange list 0 2       # 查看索引0 到索引2 处的元素
1) "three"
2) "two"
3) "one"
127.0.0.1:6379> lpop list             # 移除集合第一个元素并返回,如果key 不存在,则返回nil
"three"
127.0.0.1:6379> rpop list             # 移除集合最后一个元素并返回
"right"
127.0.0.1:6379> lrange list 0 -1      # 查看这个集合中的全部元素
1) "two"
2) "one"
127.0.0.1:6379> lindex list 1         # 根据索引得到元素
"one"
127.0.0.1:6379> lindex list 0        
"two"
127.0.0.1:6379> lindex list -1        # 根据索引得到元素,-1 表示最后一个,0 表示第一个
"one"
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> lpush list one
(integer) 1
127.0.0.1:6379> lpush list two
(integer) 2
127.0.0.1:6379> lpush list three
(integer) 3
127.0.0.1:6379> llen list             # 查看这个集合元素的个数
(integer) 3
127.0.0.1:6379> lrem list 2 two       # 根据参数 COUNT 的值,移除列表中与参数 VALUE 相等的元素
(integer) 1
127.0.0.1:6379> lrange list 0 -1      
1) "three"
2) "one"
127.0.0.1:6379> rpush mylist hello
(integer) 1
127.0.0.1:6379> rpush mylist hello
(integer) 2
127.0.0.1:6379> rpush mylist hello2
(integer) 3
127.0.0.1:6379> rpush mylist hello3
(integer) 4
127.0.0.1:6379> ltrim mylist 1 2      # 对一个列表进行修剪,让列表只保留指定区间内的元素,不在指定区 间之内的元素都将被删除。
OK
127.0.0.1:6379> lrange list 0 -1    
1) "three"
2) "one"
127.0.0.1:6379> lrange mylist 0 -1
1) "hello"
2) "hello2"
127.0.0.1:6379> rpush mylist hello
(integer) 3
127.0.0.1:6379> rpush mylist bar
(integer) 4
127.0.0.1:6379> lrange mylist 0 -1
1) "hello"
2) "hello2"
3) "hello"
4) "bar"
127.0.0.1:6379> rpoplpush mylist myotherlist    # 移除列表的最后一个元素,并将该元素添加到另一个列表并返回。
"bar"
127.0.0.1:6379> lrange mylist 0 -1
1) "hello"
2) "hello2"
3) "hello"
127.0.0.1:6379> lrange myotherlist 0 -1
1) "bar"
127.0.0.1:6379> exists list
(integer) 1
127.0.0.1:6379> lset list 0 item      # 将列表 key 下标为 index 的元素的值设置为 value
OK
127.0.0.1:6379> lrange list 0 -1
1) "item"
2) "one"
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> exists list
(integer) 0
127.0.0.1:6379> lset list 0 item
(error) ERR no such key
127.0.0.1:6379> lset list 1 new      # 更新值
(error) ERR no such key
127.0.0.1:6379> lrange list 0 -1
(empty array)
127.0.0.1:6379> lpush list
(error) ERR wrong number of arguments for 'lpush' command
127.0.0.1:6379> lpush list value1
(integer) 1
127.0.0.1:6379> lset list 0 new
OK
127.0.0.1:6379> lrange list 00
(error) ERR wrong number of arguments for 'lrange' command
127.0.0.1:6379> lrange list 0 0
1) "new"
127.0.0.1:6379> rpush mylist hello
(integer) 1
127.0.0.1:6379> rpush mylist world
(integer) 2
127.0.0.1:6379> linsert mylist before world there  # 用于在列表的元素前或者后插入元素。 # 将值 value 插入到列表 key 当中,位于值 pivot 之前或之后
(integer) 3
127.0.0.1:6379> lrange mylist 0 -1
1) "hello"
2) "there"
3) "world"
127.0.0.1:6379> 

List即可以作为栈,也可以作为队列。

集合Set

127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> sadd myset hello        # set 添加元素
(integer) 1
127.0.0.1:6379> sadd myset zhaomingming
(integer) 1
127.0.0.1:6379> sadd myset hello
(integer) 0
127.0.0.1:6379> sadd myset world
(integer) 1
127.0.0.1:6379> sadd myset test
(integer) 1
127.0.0.1:6379> smembers myset         # 查看set 集合中的元素
1) "world"
2) "zhaomingming"
3) "hello"
4) "test"
127.0.0.1:6379> sismember myset hello  # 判断集合中是否存在这元素,1 表示存在,0 表示不存在
(integer) 1
127.0.0.1:6379> sismember myset guess
(integer) 0
127.0.0.1:6379> scard myset            # 查看集合中元素的个数
(integer) 4
127.0.0.1:6379> srem myset zhaomingming    # 删除集合中指定元素
(integer) 1
127.0.0.1:6379> smembers myset         # 查看集合中的元素
1) "world"
2) "hello"
3) "test"
127.0.0.1:6379> srandmember myset      # 获取集合中的随机元素
"hello"
127.0.0.1:6379> srandmember myset
"test"
127.0.0.1:6379> srandmember myset 2    # 获取集合中随机元素并指定获取个数
1) "hello"
2) "test"
127.0.0.1:6379> srandmember myset 2
1) "world"
2) "test"
127.0.0.1:6379> spop myset             # 移除集合中的一个随机元素,并返回这个元素
"test"
127.0.0.1:6379> spop myset 
"world"
127.0.0.1:6379> spop myset 
"hello"
127.0.0.1:6379> spop myset 
(nil)
127.0.0.1:6379> smembers myset         # 查看集合中的元素
(empty array)
127.0.0.1:6379> sadd myset hello
(integer) 1
127.0.0.1:6379> sadd myset world 
(integer) 1
127.0.0.1:6379> sadd myset zhaomingming
(integer) 1
127.0.0.1:6379> sadd myset test
(integer) 1
127.0.0.1:6379> sadd myset test1
(integer) 1
127.0.0.1:6379> smembers myset
1) "zhaomingming"
2) "world"
3) "hello"
4) "test"
5) "test1"
127.0.0.1:6379> smove myset myset world    # 移除这个集合中的指定元素
(integer) 1
127.0.0.1:6379> smembers myset
1) "hello"
2) "test"
3) "world"
4) "zhaomingming"
5) "test1"
127.0.0.1:6379> sadd key1 a
(integer) 1
127.0.0.1:6379> sadd key1 b
(integer) 1
127.0.0.1:6379> sadd key1 c
(integer) 1
127.0.0.1:6379> sadd key2 c
(integer) 1
127.0.0.1:6379> sadd key2 d
(integer) 1
127.0.0.1:6379> sadd key2 e
(integer) 1
127.0.0.1:6379> sdiff key1 key2        # 得到key1 集合和别的集合的差集
1) "a"
2) "b"
127.0.0.1:6379> sinter key1 key2       # 两个集合的交集
1) "c"
127.0.0.1:6379> sunion key1 key2       # 两个集合的并集
1) "a"
2) "c"
3) "b"
4) "d"
5) "e"
127.0.0.1:6379> 
# smove SOURCE DESTINATION MEMBER 
# 将指定成员 member 元素从 source 集合移动到 destination 集合。

哈希Hash

kv模式不变,但V是一个键值对

127.0.0.1:6379> hset myhash field1 zhaomingming  # 设置集合名称,字段key,值value
(integer) 1
127.0.0.1:6379> hget myhash field1    # 获取小key 对应的字段
"zhaomingming"
127.0.0.1:6379> hmset myhash field1 zhaoheihei field2 hello  # 设置多个键值对
OK
127.0.0.1:6379> hget myhash field1
"zhaoheihei"
127.0.0.1:6379> hgetall myhash        # 获取这个集合的中的所有键值对
1) "field1"
2) "zhaoheihei"
3) "field2"
4) "hello"
127.0.0.1:6379> hdel myhash field1    # 删除这个小key
(integer) 1
127.0.0.1:6379> hgetall myhash
1) "field2"
2) "hello"
127.0.0.1:6379> hlen myhash           # 查看这个集合中键值对的个数
(integer) 1
127.0.0.1:6379> hmset myhash field1 hello field2 world   # 再次设置可以覆盖值
OK
127.0.0.1:6379> hlen myhash           # 获取集合中键值对的个数 
(integer) 2
127.0.0.1:6379> hexists myhash field1 # 判断集合中是否存在这个小key,存在返回1,不存在返回0
(integer) 1
127.0.0.1:6379> hexists myhash field3
(integer) 0
127.0.0.1:6379> hkeys myhash          # 获取集合中所有key 
1) "field2"
2) "field1"
127.0.0.1:6379> hvals myhash          # 获取集合中所有的值
1) "world"
2) "hello"
127.0.0.1:6379> hset myhash field 5   # 设置值
(integer) 1
127.0.0.1:6379> hincrby myhash field 1    # 对这个字段的值自增1
(integer) 6
127.0.0.1:6379> hget myhash field     # 获取自增后的结果值
"6"
127.0.0.1:6379> hincrby myhash field -10    # 对这个字段自减
(integer) -4
127.0.0.1:6379> hget myhash field
"-4"
127.0.0.1:6379> hsetnx myhash field1 hello    
(integer) 0
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> hsetnx myhash field1 hello    # 如果这个字段不存在,则设置值
(integer) 1
127.0.0.1:6379> hsetnx myhash field1 world    # 已存在,则设置值会失败
(integer) 0
127.0.0.1:6379> hget myhash field1            # 获取的还是原来的值
"hello"
127.0.0.1:6379> 

Redis hash是一个string类型的fifield和value的映射表,hash特别适合用于存储对象。

存储部分变更的数据,如用户信息等。

有序集合Zset

在set基础上,加一个score值。之前set是k1 v1 v2 v3,现在zset是 k1 score1 v1 score2 v2

127.0.0.1:6379> zadd myset 1 one    # 添加元素,并排序
(integer) 1
127.0.0.1:6379> zadd myset 2 two 3 three    # 添加多个元素
(integer) 2
127.0.0.1:6379> zrange myset 0 -1    # 查看元素
1) "one"
2) "two"
3) "three"
127.0.0.1:6379> zadd salary 2500 xiaoming    
(integer) 1
127.0.0.1:6379> zadd salary 5000 xiaohong
(integer) 1
127.0.0.1:6379> zadd salary 500 zhaomingming
(integer) 1
127.0.0.1:6379> zrangebyscore salary -inf +inf    # 返回有序集合中指定分数区间的成员列表。有序集成员按分数值递增(从小到大) 次序排列。
1) "zhaomingming"
2) "xiaoming"
3) "xiaohong"
127.0.0.1:6379> zrangebyscore salary -inf +inf    # 显示整个有序集
(empty array)    
127.0.0.1:6379> zrangebyscore salary -inf +inf withscores     # 递增排列
1) "zhaomingming"
2) "500"
3) "xiaoming"
4) "2500"
5) "xiaohong"
6) "5000"
127.0.0.1:6379> zrevrange salsry 0 -1 withscores   
(empty array)
127.0.0.1:6379> zrevrange salary 0 -1 withscores # 递减排列
1) "xiaohong"
2) "5000"
3) "xiaoming"
4) "2500"
5) "zhaomingming"
6) "500"
127.0.0.1:6379> zrangebyscore salary -inf 2500 withscores    # 显示工资 <=2500 的所有成员
1) "zhaomingming"
2) "500"
3) "xiaoming"
4) "2500"
127.0.0.1:6379> zrange salary 0 -1    
1) "zhaomingming"    
2) "xiaoming"
3) "xiaohong"
127.0.0.1:6379> zrem salary zhaomingming    # zrem 移除有序集中的一个或多个成员
(integer) 1
127.0.0.1:6379> zrange salary 0 -1    
1) "xiaoming"
2) "xiaohong"
127.0.0.1:6379> zcard salary    # 用于计算集合中元素的数量。
(integer) 2
127.0.0.1:6379> zadd myset 1 hello
(integer) 1
127.0.0.1:6379> zadd myset 2 world 3 kuangshen
(integer) 2
127.0.0.1:6379> zcount myset 1 3    # 计算有序集合中指定分数区间的成员数量。
(integer) 6
127.0.0.1:6379> zcount myset 1 2
(integer) 4
127.0.0.1:6379> zadd salary 2500 xiaoming
(integer) 0
127.0.0.1:6379> zadd salary 5000 xiaohong
(integer) 0
127.0.0.1:6379> zadd salary 500 zhaomingming
(integer) 1
127.0.0.1:6379> zrange salary 0 -1 withscores    # 显示所有成员及其 score 值
1) "zhaomingming"
2) "500"
3) "xiaoming"
4) "2500"
5) "xiaohong"
6) "5000"
127.0.0.1:6379> zrank salary zhaomingming    # 显示 zhaomingming 的薪水排名,最少
(integer) 0
127.0.0.1:6379> zrank salary xiaohong        # 显示 xiaohong 的薪水排名,第三
(integer) 2
127.0.0.1:6379> zrevrank salary zhaomingming    # 返回有序集中成员的排名。其中有序集成员按分数值递减(从大到小)排序。
(integer) 2
127.0.0.1:6379> zrevrank salary xiaohong
(integer) 0
127.0.0.1:6379> 

k

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海上钢琴师_1900

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值