入门redis一(基本命令)

本文详细介绍了Redis中的基础操作,包括键的设置、获取、类型检查和过期时间设置。接着深入讲解了String的增删改查、批量操作以及获取设置。此外,还涵盖了List的添加、获取、移除、截取等操作,Set的添加、移除、交集、差集和并集,以及Hash的设置、获取、长度、存在性检查等。最后讨论了Zset的添加、查询和移除。这些内容全面展示了Redis数据结构的常用操作。
摘要由CSDN通过智能技术生成

一.Redis-key

  • set key value
  • get key
127.0.0.1:6379> set name variable #创建一个键值对name=variable
OK
127.0.0.1:6379> get name #获取name键的值为variable
"variable"

  • exists key
127.0.0.1:6379> exists name #确定是否存在键name
(integer) 1

  • keys pattern(正则表达式)
127.0.0.1:6379> keys * #查看当前库中所有的key
1) "name"

  • expire key seconds
  • ttl key
127.0.0.1:6379> expire name 10 #设置key为name的过期时间
(integer) 1
127.0.0.1:6379> ttl name #查看剩余过期时间
(integer) 3
127.0.0.1:6379> ttl name 
(integer) -2
127.0.0.1:6379> exists name
(integer) 0

  • type key
127.0.0.1:6379> type name #查看key的类型
string

二.String

1.基本字符操作

  • append key value
127.0.0.1:6379> append name big #在key的值尾部追加字符串
(integer) 8
127.0.0.1:6379> get name
"tigerbig"

  • strlen key
127.0.0.1:6379> strlen name #获取key的值的长度
(integer) 8

2.增减操作

  • incr key
  • incrby key increment
127.0.0.1:6379> set number 1
OK
127.0.0.1:6379> get number
"1"
127.0.0.1:6379> incr number  #递增1
(integer) 2
127.0.0.1:6379> incrby number 3  #步长3为增量进行递增
(integer) 5
127.0.0.1:6379> get number
"5"

  • decr key
  • decrby key decrement
  • 这两个减操作类比以上加操作

3.替换与截取

  • getrange key start end
  • setrange key offset value
127.0.0.1:6379> get name 
"tigerbig"
127.0.0.1:6379> getrange name 1 4 #截取字符串[1,4]
"iger"
127.0.0.1:6379> setrange name 3 kk #替换下标3以后两个字符串为kk
(integer) 8
127.0.0.1:6379> get name
"tigkkbig"
127.0.0.1:6379> getrange name 0 -1 #截取整个字符串
"tigkkbig"

4.设置过期时间,不存在就设置

  • setex key seconds value
  • setnx key value
127.0.0.1:6379> setex news 20 experience #设置news值为experience,还有20秒过期
OK
127.0.0.1:6379> ttl news
(integer) 12
127.0.0.1:6379> setnx news2 myhome #设置不存在的news2值为myhome
(integer) 1
127.0.0.1:6379> ttl news
(integer) -2
127.0.0.1:6379> setnx news2 newhome 
(integer) 0
127.0.0.1:6379> get news2
"myhome"
127.0.0.1:6379> get news
(nil)

5.批量操作

  • mset key value [key value…]
  • mget key [key…]
  • msetnx key value[key value…]
127.0.0.1:6379> mset a1 b1 a2 b2  #同时设置a1=b1,a2=b2
OK
127.0.0.1:6379> keys *
1) "a2"
2) "a1"
127.0.0.1:6379> mget a1 a2 #同时获取a1,a2的值
1) "b1"
2) "b2"
127.0.0.1:6379> msetnx a1 k1 a3 b3 #原子性,由于a1已存在,则操作不成功,连带a3也操作不成功。即为一个不成功,全部不执行.
(integer) 0

补充(对象操作实例)
1.mset user:2 {name:john,age:23} #设置一个对象user2,其属性name和age的值用json格式保存。从而,使用key*命令返回user:2, 即说明要想获取属性值可以用mget一次获得,或者用get一次获得。

2.mset user:1:name value1 user:1:age value2 #说明key的一种新形式user:{id}:{filed},注意不要以为这是一个user:1对象,而是两个不同的key。

6.先获取在设值

  • getset
127.0.0.1:6379> getset data hello #先获取data的值,由于不存在data则返回nil
(nil)
127.0.0.1:6379> set data hello 
OK
127.0.0.1:6379> getset data tiger #先获取data值为hello,然后设置其值为tiger,返回的是原来的值
"hello"
127.0.0.1:6379> get data
"tiger"

三.List

1.添加与获取

提醒:不区分大小写,例如lpush和Lpush效果一样.

  • lpush key element [element …]
  • lrange key start stop
#往list中push多个元素,并由lrange获取多个元素,注意返回值顺序
127.0.0.1:6379> lpush list first
(integer) 1
127.0.0.1:6379> lpush list second
(integer) 2
127.0.0.1:6379> lpush list third
(integer) 3
127.0.0.1:6379> lrange list 0 2
1) "third"
2) "second"
3) "first"
127.0.0.1:6379> rpush list fourth #从右边push一个元素fourth进来,同样注意顺序
(integer) 4
127.0.0.1:6379> lrange list 0 -1
1) "third"
2) "second"
3) "first"
4) "fourth"

2.移出

  • lpop/rpop key
127.0.0.1:6379> lpop list #移除左边的元素
"third"
127.0.0.1:6379> rpop list #移除右边的元素
"fourth"
127.0.0.1:6379> lrange list 0 -1
1) "second"
2) "first"

3.下标取值

  • lindex key index
127.0.0.1:6379> lrange newlist 0 -1
1) "john"
2) "bajie"
3) "wukong"
127.0.0.1:6379> lindex newlist 1 #获取指定下标为1的元素
"bajie"

4.移除指定个数的值

  • lrem key count element
127.0.0.1:6379> lrem newlist 1 wukong #移除1个wukong元素
(integer) 1
127.0.0.1:6379> lrange newlist 0 -1
1) "john"
2) "bajie"

5.截取元素

  • ltrim key start stop
127.0.0.1:6379> lrange weekList 0 -1
1) "thurs"
2) "wednes"
3) "tues"
4) "mon"
127.0.0.1:6379> ltrim weekList 1 2 #截取下标为1到2的元素并返回
OK
127.0.0.1:6379> lrange weekList 0 -1
1) "wednes"
2) "tues"

6.移除最后一个元素并添加

  • rpoplpush source destination
127.0.0.1:6379> lrange list 0 -1
1) "thursday"
2) "wednesday"
3) "tuesday"
4) "monday"
127.0.0.1:6379> rpoplpush list weekList #移除list中的monday添加到新的weekList中
"monday"
127.0.0.1:6379> lrange weekList 0 -1
1) "monday"

7.替换指定值

  • lset key index value
127.0.0.1:6379> lpush list math eletronic art 
(integer) 3
127.0.0.1:6379> lset list 1 fit #替换下标为1的元素为fit
OK
127.0.0.1:6379> lrange list 0 -1
1) "art"
2) "fit"
3) "math"

8.插入指定值

  • linsert key before|after pivot element
127.0.0.1:6379> linsert list before fit music #在fit之前插入music
(integer) 4
127.0.0.1:6379> lrange list 0 -1
1) "art"
2) "music"
3) "fit"
4) "math"

四.Set(不重复)

1.添加与获取,判断存在

  • sadd key member [member …]
  • smembers myset
  • smember key member
127.0.0.1:6379> sadd myset hello
(integer) 1
127.0.0.1:6379> sadd myset hello #说明不重复
(integer) 0
127.0.0.1:6379> sadd myset manager
(integer) 1
127.0.0.1:6379> sadd myset solidarity
(integer) 1
127.0.0.1:6379> smembers myset #获取全部
1) "solidarity"
2) "manager"
3) "hello"
127.0.0.1:6379> sismember myset goto #判断goto是否存在于myset中
(integer) 0
127.0.0.1:6379> sismember myset hello
(integer) 1

2.移除指定值

  • srem key member [member …]
127.0.0.1:6379> srem myset hello
(integer) 1
127.0.0.1:6379> smembers myset 
1) "solidarity"
2) "manager"

3.抽取随机值

  • srandmember key [count]
127.0.0.1:6379> smembers myset
1) "solidarity"
2) "manager"
3) "spectacle"
127.0.0.1:6379> srandmember myset #从myset中随机抽取一个元素
"solidarity"
127.0.0.1:6379> srandmember myset 2 #从myset中随机抽取2个元素
1) "manager"
2) "spectacle"

4.交集,差集和并集

  • sdiff key [key …] (注意参照对象)
  • sinter key [key …]
  • sunion key [key …]
127.0.0.1:6379> smembers newSet
1) "palm2"
2) "palm3"
3) "palm1"
127.0.0.1:6379> smembers oldSet
1) "feet3"
2) "palm2"
3) "palm1"
127.0.0.1:6379> sdiff newSet oldSet #以newSet为参照得出两者的差集
1) "palm3"
127.0.0.1:6379> sinter newSet oldSet #求newSet和oldSet的交集
1) "palm2"
2) "palm1"
127.0.0.1:6379> sunion newSet oldSet #求newSet和oldSet的并集
1) "palm2"
2) "palm1"
3) "palm3"
4) "feet3"

5.移动指定元素

  • smove source destination member
127.0.0.1:6379> sadd paper news1 news2 news3
(integer) 3
127.0.0.1:6379> sadd bag line1 line2 line3
(integer) 3
127.0.0.1:6379> smove paper bag news2 #将paper中的news2移动到了bag中
(integer) 1
127.0.0.1:6379> smembers bag
1) "line3"
2) "line1"
3) "news2"
4) "line2"

五.Hash

存储结构:key-map

1.设置与获取

  • hdel key field [field …]
  • hget key field
  • hset key field value [field value …]
  • hmget key field value [field value …]
  • hgetall key
127.0.0.1:6379> hset hash1 label1 good label2 bad  #设置key为hash1的map中键label1的值为good,键label2的值为bad
(integer) 2
127.0.0.1:6379> hget hash1 label1 #获取hash1键中的key为label1的值
"good"
127.0.0.1:6379> hmget hash1 label1 label2 #同时获取指定map中key的值
1) "good"
2) "bad"
127.0.0.1:6379> hgetall hash1 #同时获取map中全部key和value
1) "label1"
2) "good"
3) "label2"
4) "bad"
127.0.0.1:6379> hset hash1 label3 worse
(integer) 1
127.0.0.1:6379> hdel hash1 label2 #删除指定map中key
(integer) 1
127.0.0.1:6379> hgetall hash1
1) "label1"
2) "good"
3) "label3"
4) "worse"

2.获取map长度

  • hlen key
127.0.0.1:6379> hgetall hash1 #
1) "label1"
2) "good"
3) "label3"
4) "worse"
127.0.0.1:6379> hlen hash1 #获取键hash1对应map的长度
(integer) 2

3.判断是否存在

  • hexists key field
127.0.0.1:6379> hgetall hash1
1) "label1"
2) "good"
3) "label3"
4) "worse"
127.0.0.1:6379> hexists hash1 label3 #判断键hash1对应map中是否存在key为label3
(integer) 1

4.只获取值和只获取键

  • hkeys key
  • hvals key
127.0.0.1:6379> hkeys hash1
1) "label1"
2) "label3"
127.0.0.1:6379> hvals hash1
1) "good"
2) "worse"

5.增加,根据存在设置

  • hsetnx key field value
  • hincrby key field value
127.0.0.1:6379> hkeys hash2
1) "label1"
2) "label2"
3) "label3"
4) "label4"
5) "symbol"
127.0.0.1:6379> hvals hash2
1) "green"
2) "red"
3) "yellow"
4) "1"
5) "fabricate"
127.0.0.1:6379> hincrby hash2 label4 3 #设置增量为3
(integer) 4
127.0.0.1:6379> hsetnx hash2 label4 good #存在就不添加
(integer) 0
127.0.0.1:6379> hsetnx hash2 symbol fabricate #不存在就添加
(integer) 1


六.Zset

1.添加与查询

  • zadd key [nx|xx] [GT|LT] [CH] [INCR] score member [score member…]
  • zrangebyscore key min max [WITHSCORES] [LIMIT offset count]
127.0.0.1:6379> zadd salary 100 wuhan #添加用户wuhan的薪水为100
(integer) 1
127.0.0.1:6379> zadd salary 231 marry
(integer) 1
127.0.0.1:6379> zadd salary 44 ketty
(integer) 1
127.0.0.1:6379> zrangebyscore salary -inf +inf #显示全部用户,从小到大(-inf意为负无穷,+inf为正无穷)
1) "ketty"
2) "wuhan"
3) "marry"
127.0.0.1:6379> zrevrange salary 0 -1 #显示全部用户,从大到小
1) "marry"
2) "wuhan"
3) "ketty"
127.0.0.1:6379> zrangebyscore salary -inf +inf withscores #显示全部用户,从小到大,并且附带数据
1) "ketty"
2) "44"
3) "wuhan"
4) "100"
5) "marry"
6) "231"
127.0.0.1:6379> zrangebyscore salary -inf 99 withscores #从小到大,显示99以下数值的用户
1) "ketty"
2) "44"

2.移除

  • zrem key member [member …]
  • zcard key
  • zcount key min max
127.0.0.1:6379> zrangebyscore number -inf +inf withscores
1) "unit2"
2) "4"
3) "unit1"
4) "8"
5) "unit3"
6) "11"
127.0.0.1:6379> zrem number unit1 #移除元素unit1
(integer) 1
127.0.0.1:6379> zrange number 0 -1
1) "unit2"
2) "unit3"
127.0.0.1:6379> zcard number #查询元素总个数
(integer) 2
127.0.0.1:6379> zrangebyscore number -inf +inf withscores
1) "unit5"
2) "3"
3) "unit2"
4) "4"
5) "unit3"
6) "11"
7) "unit6"
8) "13"
127.0.0.1:6379> zcount number 3 13 #查询指定3和13这个区间的长度
(integer) 4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值