Redis-03-基本命令

一、Redis基本操作

  • ping 返回 PONG:检查Redis是否可用【相当于服务器和客户端在打招呼】
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> 
  • dbsize:返回的是数据库中key的数量
127.0.0.1:6379> dbsize
(integer) 0
  • select db:切换Rdies库
127.0.0.1:6379> select 2
OK
  • flushdb:删除当前库的数据
  • flushall:删除所有库的数据
  • exit 或 quit:退出客户端,进入linux环境
  • redis-cli shutdown :关闭了服务器,建议停掉后,立马启动

二、Redis键(key)

  • keys:列出所有key
    *:代表多个字符
    ?:代表一个字符
127.0.0.1:6379[2]> set k1 v1
OK
127.0.0.1:6379[2]> set k2 v2
OK
127.0.0.1:6379[2]> keys *
1) "k1"
2) "k2"

*与?的区别

127.0.0.1:6379[2]> keys *1
1) "kabc1"
2) "k1"
127.0.0.1:6379[2]> keys ?1
1) "k1"

exists:判断key是否存在(存在为1,不存在为0)

127.0.0.1:6379[2]> exists k1
(integer) 1
127.0.0.1:6379[2]> exists kabc1
(integer) 1
127.0.0.1:6379[2]> exists kabc2
(integer) 0

expire:语法:expire key secords
作用:设置key的生存周期,超过时间,key会自动删除。单位是秒
返回值:设置成功返回数字1,其他情况返回是0

127.0.0.1:6379[2]> expire k1 5
(integer) 1
127.0.0.1:6379[2]> get k1
"v1"
127.0.0.1:6379[2]> get k1
(nil)
127.0.0.1:6379[2]> set 1590000 3568
OK
127.0.0.1:6379[2]> expire 1590000 15
(integer) 1
127.0.0.1:6379[2]> get 1590000
"3568"
127.0.0.1:6379[2]> get 1590000
(nil)

ttl:查看存活时间
返回值:
-1:没有设置key的生存周期,key永不过期
-2:key不存在
数字:key的剩余时间,单位为秒

127.0.0.1:6379[2]> set k1 v1
OK
127.0.0.1:6379[2]> ttl k1
(integer) -1
127.0.0.1:6379[2]> get aa
(nil)
127.0.0.1:6379[2]> ttl aa
(integer) -2
127.0.0.1:6379[2]> expire k1 60
(integer) 1
127.0.0.1:6379[2]> ttl k1
(integer) 54
127.0.0.1:6379[2]> ttl k1
(integer) 46
127.0.0.1:6379[2]> ttl k1
(integer) 32

del:删除key

127.0.0.1:6379[2]> set game lol
OK
127.0.0.1:6379[2]> get game
"lol"
127.0.0.1:6379[2]> del game
(integer) 1
127.0.0.1:6379[2]> get game
(nil)

type:判断key的类型(如果key不存在,则返回none)

127.0.0.1:6379[2]> set k2 v2
OK
127.0.0.1:6379[2]> type k2
string
127.0.0.1:6379[2]> type aaa
none

三、Redis字符串(String)

(key–value(string))
set:设置key和value
get:通过key获得value

  • mset:设置多组key和value mset key value [key value key value …]
  • mget 通过多组key获得value
127.0.0.1:6379[2]> mset a a1 b b1 c c1 d d1
OK
127.0.0.1:6379[2]> get k1
(nil)
127.0.0.1:6379[2]> mget a b c d e f 
1) "a1"
2) "b1"
3) "c1"
4) "d1"
5) (nil)
6) (nil)
  • incr:加一
  • decr:减一
  • 注意:操作key的对应的value必须能转化为数字。
127.0.0.1:6379[2]> set count 123
OK
127.0.0.1:6379[2]> get count
"123"
127.0.0.1:6379[2]> incr count
(integer) 124
127.0.0.1:6379[2]> incr count
(integer) 125
127.0.0.1:6379[2]> get count
"125"
127.0.0.1:6379[2]> decr count
(integer) 124
127.0.0.1:6379[2]> decr count
(integer) 123
127.0.0.1:6379[2]> get count
"123"

  • append:追加对应key的value值
127.0.0.1:6379[2]> set name zhl
OK
127.0.0.1:6379[2]> append name 123
(integer) 6
127.0.0.1:6379[2]> get name
"zhl123"
  • strlen:返回key值的长度
127.0.0.1:6379[2]> strlen name
(integer) 6

  • setex:将值 value 关联到 key ,并将 key 的生存时间设为 seconds (以秒为单位)。如果 key 已经存在, SETEX 命令将覆写旧值。
127.0.0.1:6379[2]> setex zhl 8000 600
OK
127.0.0.1:6379[2]> ttl zhl
(integer) 7996

  • setnx:将 key 的值设为 value ,当且仅当 key 不存在。若给定的 key 已经存在,则 SETNX 不做任何动作。
127.0.0.1:6379[2]> setnx aaa aaaa
(integer) 1
127.0.0.1:6379[2]> setnx aaa bbbb
(integer) 0
  • getset:将给定 key 的值设为 value ,并返回 key 的旧值(old value)。
127.0.0.1:6379[2]> getset aaa ccc
"aaaa"
127.0.0.1:6379[2]> get aaa
"ccc"

四、Redis哈希(Hash)

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

key   		value
user  		string 类型的 field 和 value 的映射表
user345		name      张三
			age        20
			address  四川
  • hset:将哈希表 key 中的域 field 的值设为 value ,如果 key 不存在,则新建 hash 表,执行赋值,如果有
    field ,则覆盖值。
  • hget:获取哈希表 key 中给定域 field 的值
127.0.0.1:6379> hset user345 name zhangsan
(integer) 1
127.0.0.1:6379> hset user345 age 20
(integer) 1
127.0.0.1:6379> hset user345 address sichuan
(integer) 1
127.0.0.1:6379> hget user345 name
"zhangsan"
127.0.0.1:6379> hget user345 age
"20"
127.0.0.1:6379> hget user345 address
"sichuan"
  • hmset:同时将多个 field-value (域-值)设置到哈希表 key 中,此命令会覆盖已经存在的 field,hash 表key 不存在,创建空的 hash 表,执行 hmset.
  • hmget:获取哈希表 key 中一个或多个给定域的值
127.0.0.1:6379> hmset user345 name lisi address beijing
OK
127.0.0.1:6379> hmget user345 name age address
1) "lisi"
2) "20"
3) "beijing"

  • hlen:获取hash key 的长度
127.0.0.1:6379> hlen user345
(integer) 3
127.0.0.1:6379> hset user345 tel 56789
(integer) 1
127.0.0.1:6379> hlen user345
(integer) 4
  • hgetall:获得hash所有的属性和值
127.0.0.1:6379> hgetall user345
1) "name"
2) "lisi"
3) "age"
4) "20"
5) "address"
6) "beijing"
7) "tel"
8) "56789"
  • hkeys:获得hash所有的属性
127.0.0.1:6379> hkeys user345
1) "name"
2) "age"
3) "address"
4) "tel"
  • hvals:获得hash所有的value
127.0.0.1:6379> hvals user345
1) "lisi"
2) "20"
3) "beijing"
4) "56789"
  • hdel:删除hash某个属性
127.0.0.1:6379> hdel user345 address name
(integer) 2
127.0.0.1:6379> hgetall user345
1) "age"
2) "20"
3) "tel"
4) "56789"
  • hexists:判断hash是否包含某个属性`
127.0.0.1:6379> hexists user345 name
(integer) 0
127.0.0.1:6379> hexists user345 age
(integer) 1

五、Redis列表(List)

list是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)

key   			value
shop			电视  冰箱 洗衣机

通过这个列表:可以表示的数据结构有栈和队列。

队列:一边进,一边出。
现实中:买票、银行排号。
  • lpush:从左边放入元素到list
  • rpush;从右边放入元素到list
  • llen:显示list的长度
127.0.0.1:6379> lpush vip vip1vip2 vip3
(integer) 2
127.0.0.1:6379> lpush vip vip1vip2 vip3 vip4
(integer) 5
127.0.0.1:6379> lpush vip vip1 vip2 vip3 
(integer) 8
127.0.0.1:6379> llen vip
(integer) 8
127.0.0.1:6379> rpush p1 p2 p3
(integer) 2
127.0.0.1:6379> llen vip
(integer) 8
127.0.0.1:6379> rpush vip p1 p2 p3
(integer) 11
127.0.0.1:6379> llen vip
(integer) 11

//vip3 vip2 vip1 vip4 vip3 vip1vip2 vip3 vip1vip2 p1 p2 p3

  • lpop: 从左边取出元素到list
  • rpop:从右边取出元素到list
127.0.0.1:6379> lpop vip
"vip3"
127.0.0.1:6379> lpop vip
"vip2"
127.0.0.1:6379> rpop vip
"p3"
127.0.0.1:6379> rpop vip
"p2"
127.0.0.1:6379> llen vip
(integer) 7

//a5 a4 a3 a2 a1

  • lrange:列出list中指定元素
127.0.0.1:6379> lpush vip a1 a2 a3 a4 a5
(integer) 5
127.0.0.1:6379> lrange vip 0 3
1) "a5"
2) "a4"
3) "a3"
4) "a2"
127.0.0.1:6379> lrange vip 3 4
1) "a2"
2) "a1"
127.0.0.1:6379> lrange vip 0 4
1) "a5"
2) "a4"
3) "a3"
4) "a2"
5) "a1"
  • lindex:获得指定位置元素的值
127.0.0.1:6379> lindex vip 0
"a5"
127.0.0.1:6379> lindex vip 3
"a2"
127.0.0.1:6379> lindex vip 300
(nil)

  • lset:设置指定位置元素的值
127.0.0.1:6379> lset vip 1 vip1
OK
127.0.0.1:6379> lrange vip 0 -1
1) "a5"
2) "vip1"
3) "a3"
4) "a2"
5) "a1"
  • linsert:
    语法:linsert key BEFORE|ALFTER pivot value
    作用:将值 value 插入到列表 key 当中位于值 pivot 之前或之后的位置。key 不存在,pivot不在列表中,不执行任何操作。
    返回值:命令执行成功,返回新列表的长度。没有找到 pivot 返回 -1, key 不存在返回 0。
127.0.0.1:6379> lrange vip 0 -1
1) "a5"
2) "vip1"
3) "a3"
4) "a2"
5) "a1"
127.0.0.1:6379> linsert vip before vip2 vip_plus
(integer) -1
127.0.0.1:6379> lrange vip 0 -1
1) "a5"
2) "vip1"
3) "a3"
4) "a2"
5) "a1"
127.0.0.1:6379> linsert vip after a3 vip_plus
(integer) 6
127.0.0.1:6379> lrange vip 0 -1
1) "a5"
2) "vip1"
3) "a3"
4) "vip_plus"
5) "a2"
6) "a1"
  • lrem:
    count 的值可以是以下几种:
    count > 0 : 从表头开始向表尾搜索,移除与 value 相等的元素,数量为 count 。
    count < 0 : 从表尾开始向表头搜索,移除与 value 相等的元素,数量为 count 的绝对值。
    count = 0 : 移除表中所有与 value 相等的值。
127.0.0.1:6379> lpush vip 1 2 3 4 5 6 7 8 9
(integer) 9
127.0.0.1:6379> lrange vip 0 -1
1) "9"
2) "8"
3) "7"
4) "6"
5) "5"
6) "4"
7) "3"
8) "2"
9) "1"
127.0.0.1:6379> lrem vip 3 2
(integer) 1
127.0.0.1:6379> lrange vip 0 -1
1) "9"
2) "8"
3) "7"
4) "6"
5) "5"
6) "4"
7) "3"
8) "1"
127.0.0.1:6379> lrem vip -1 4
(integer) 1
127.0.0.1:6379> lrange vip 0 -1
1) "9"
2) "8"
3) "7"
4) "6"
5) "5"
6) "3"
7) "1"
127.0.0.1:6379> lrem vip 0 7
(integer) 1
127.0.0.1:6379> lrange vip 0 -1
1) "9"
2) "8"
3) "6"
4) "5"
5) "3"
6) "1"

六、Redis集合(Set)

Set 是 string 类型的无序集合,集合成员是唯一的,即集合中不能出现重复的数据.

key			value
food		炒饭
			炒面
			炒蛋
			
特点:
1.无序
2.元素不可重复	

指令

  • sadd:将一个或多个 member 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略,不会再加入。
127.0.0.1:6379> sadd set01 abc 123 haha abc abc 123 
(integer) 3
  • scard:获取集合里面的元素个数
127.0.0.1:6379> scard set01
(integer) 3

  • smembers:列出set中所有的元素
127.0.0.1:6379> smembers set01
1) "haha"
2) "123"
3) "abc"

  • sismember:判断是否包含某个元素
127.0.0.1:6379> sismember set01 abc
(integer) 1
127.0.0.1:6379> sismember set01 aaa
(integer) 0
  • srem:删除元素
127.0.0.1:6379> srem set01 abc 123
(integer) 2
127.0.0.1:6379> smembers set01
1) "haha"
  • srandmember:
    语法:srandmember key [count]
    作用:只提供 key,随机返回集合中一个元素,元素不删除,依然在集合中;
    提供了 count时,count 正数, 返回包含 count 个数元素的集合, 集合元素各不相同。
    count 是负数,返回一个 count 绝对值的长度的集合, 集合中元素可能会重复多次。
    返回值:多个元素的集合

    比如微信的:骰子、石头剪刀布

127.0.0.1:6379> sadd set01 a b c d e f
(integer) 6
127.0.0.1:6379> srandmember set01 3
1) "f"
2) "b"
3) "a"
127.0.0.1:6379> srandmember set01 3
1) "d"
2) "e"
3) "a"
127.0.0.1:6379> srandmember set01 3
1) "c"
2) "e"
3) "a"
127.0.0.1:6379> srandmember set01 -3
1) "haha"
2) "f"
3) "d"

七、Redis有序集合(Zset)

有序集合zset 和集合set一样也是 string 类型元素的集合,且不允许重复的成员。
不同的是 zset 的每个元素都会关联一个分数(分数可以重复),redis 通过分数来为集合中的成员进行从小到大的排序。
可以理解为set的升级版

key			value
food		炒饭  1000
			炒面  1500
			炒蛋  1555				
特点: 
1.不能重复
2.无序,但是因为有分数的概念,可以根据分数进行排序。	
常用:各大排行榜
  • zadd:添加
127.0.0.1:6379[2]> zadd zset01 100 za 120 lisi 89 wangwu 
(integer) 3
  • zcard:查看集合中元素个数
127.0.0.1:6379[2]> zcard zset01
(integer) 3
  • zscore:查看成员的分数
127.0.0.1:6379[2]> zscore zset01 lisi
"120"
127.0.0.1:6379[2]> zscore zset01 zhangsan
(nil)
127.0.0.1:6379[2]> zscore zset01 za
"100"
  • zrange:排序方式为分数由小到大
127.0.0.1:6379[2]> zrange zset01 0 -1
1) "wangwu"
2) "za"
3) "lisi"
127.0.0.1:6379[2]> zrange zset01 0 -1 withscores
1) "wangwu"
2) "89"
3) "za"
4) "100"
5) "lisi"
6) "120"
  • zrevrange:排序方式为分数由大到小
127.0.0.1:6379[2]> zrevrange zset01 0 -1
1) "lisi"
2) "za"
3) "wangwu"
127.0.0.1:6379[2]> zrevrange zset01 0 -1 withscores
1) "lisi"
2) "120"
3) "za"
4) "100"
5) "wangwu"
6) "89"
  • zrank:返回有序集 key 中成员 member 的排名。其中有序集成员按 score 值递增(从小到大)顺序排列。
    排名以 0 为底,也就是说, score 值最小的成员排名为 0 。
127.0.0.1:6379[2]> zrank   zset01 za
(integer) 1
127.0.0.1:6379[2]> zrank   zset01 lisi
(integer) 2
127.0.0.1:6379[2]> zrank   zset01 wangwu
(integer) 0
  • zrevrank:返回有序集 key 中成员 member 的排名。其中有序集成员按 score 值递减(从大到小)排序。
    排名以 0 为底,也就是说, score 值最大的成员排名为 0 。
127.0.0.1:6379[2]> zscore zset01 wangwu
"89"
127.0.0.1:6379[2]> zrevrank zset01  wangwu
(integer) 2
  • zrem:删除元素
127.0.0.1:6379[2]> zrem zset01 za
(integer) 1
127.0.0.1:6379[2]> zscore zset01 za
(nil)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值