redis学习笔记3,String类型

本文详细介绍了Redis中键值对的基本操作,包括设置、设置条件、设置有效期、字符串操作等,通过实例演示了如何使用这些操作进行键值对的管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >




1.set


设置Key对应的值为string类型的value。


例如我来设置一个name = MoWenJian 的键值对,可以这样做:


[root@localhost src]# /usr/local/redis/src/redis-cli
redis 127.0.0.1:6379> set name MoWenJian
OK
redis 127.0.0.1:6379>



2.setnx


设置key 对应的值为string 类型的value。如果key 已经存在,返回0,nx 是not exist 的意思。


例如我们添加一个name= MoWenJian_New 的键值对,可以这样做:


redis 127.0.0.1:6379> get name
"
MoWenJian"
redis 127.0.0.1:6379> setnx name
MoWenJian_New
(integer) 0
redis 127.0.0.1:6379> get name
"
MoWenJian_New"
redis 127.0.0.1:6379>



由于原来name 有一个对应的值,所以本次的修改不生效,且返回码是0。


3.setex


设置一个键对应的值,并对此键值对设置一个有效期。


例如:我们指定一个键值对 lampbrother = success,并且设置一个有效期为10秒,我们来这样做:


redis 127.0.0.1:6379> set lampbrother 10 success
OK
redis 127.0.0.1:6379> get lampbrother

"success"
redis 127.0.0.1:6379> get
lampbrother
(nil)
redis 127.0.0.1:6379>


由于第二次调用已经超过10秒,所以无法取到lampbrother的值了!!!


4.setrange


设置指定键的值的子字符串。


例如:我现在要把 jiege 的邮箱 lijie@ li-jie.me 改为 lijie@lampbrother.net


redis 127.0.0.1:6379> get jiege
"lijie@li-jie.me"
redis 127.0.0.1:6379> setrange jiege 6
lampbrother.net
(integer) 21
redis 127.0.0.1:6379> get
lampbrother
"lijie@lampbrother.net"
redis 127.0.0.1:6379>



5.mset


同时设置多个键值对,成功返回ok表示所有键设置成功,失败则返回0表示所有键设置都不成功


例如:我们同时设置 李文凯 的多个爱好:


redis 127.0.0.1:6379> mset hobby1 smoke hobby2 beer hobby3 girl
OK
redis 127.0.0.1:6379> get hobby1

"smoke"
redis 127.0.0.1:6379> get
hobby3
"girl"
redis 127.0.0.1:6379>



6.msetnx


同时设置多个键值对,同样失败返回0表示所有键都没有设置成功,成功返回OK表示所有键都设置成功,但

不同于mset的是本方法不会设置已经存在的键值对!


redis 127.0.0.1:6379> get hobby1
"smoke"
redis 127.0.0.1:6379> get
hobby3
"girl"
redis 127.0.0.1:6379> msetnx hobby1 chouyan hobby4 hejiu
(integer) 0
redis 127.0.0.1:6379> get hobby4
(nil)
redis 127.0.0.1:6379> get hobby3
"girl"



可以看出如果这条命令返回0,那么里面操作都会回滚,都不会被执行。


7.get


获取某个键对应的值,如果不存在则返回 nil


redis 127.0.0.1:6379> get hobby4
(nil)
redis 127.0.0.1:6379> get hobby3
"girl"



如上例,hobby3存在,并且值为"girl",hobby4不存在,则返回 nil


8.getset


设置某一个键的值,并且返回该键的旧值,如果该键不存在,则返回 nil,然后再设置新的值


例如:


redis 127.0.0.1:6379> getset hobby4 football
(nil)
redis 127.0.0.1:6379> getset hobby3 basketball
"girl"
redis 127.0.0.1:6379> get hobby4
"football"
redis 127.0.0.1:6379> get hobby3
"basketball"



9.getrange


获取指定键的值的子字符串


例如:

redis 127.0.0.1:6379> getrange jiege 0 4
"lijie"
redis 127.0.0.1:6379> getrange jiege -15 -1
"lampbrother.net"
redis 127.0.0.1:6379> getrange jiege 0 100
"lijie@lampbrother.net"



上例中, getrange jiege 0 4 表示获取 jiege 这个键的值的下标为 0~4 的所有字符


同样, getrange jiege -15 -1 表示获取 jiege 这个键的值的下标从后数第15个到最后一个的所有字符


getrange jiege 0 100 则表示全部输出 jiege 这个键的值的所有字符,因为最后一个字符的下标 小于 100,


当下标超出字符串长度时,将默认为是同方向的最大下标。


10.mget


一次性获取多个键的值,如果键不存在,则返回 nil


例如:


redis 127.0.0.1:6379> mget hobby1 hobby2 hobby5
1) "smoke"
2) "beer"
3) (nil)
redis 127.0.0.1:6379>



hobby5不存在,所以返回nil。


11.incr


对一个键的值做加加操作,并返回新的值,如果该键的值类型不是int类型,将会报错,如果该键不存在,则设置该键为1


例如:


redis 127.0.0.1:6379> set age 20
OK
redis 127.0.0.1:6379> incr age
(integer) 21
redis 127.0.0.1:6379> get age
"21"
redis 127.0.0.1:6379> get age1
(nil)
redis 127.0.0.1:6379> incr age1
(integer) 1
redis 127.0.0.1:6379> get age1
"1"



12.incrby


类似于incr,但是incrby可以指定增加的值


例如:


redis 127.0.0.1:6379> incrby age 5
(integer) 26
redis 127.0.0.1:6379> get age
"26"
redis 127.0.0.1:6379> incrby age -1
(integer) 25
redis 127.0.0.1:6379> get age

"25"



大家可以看到,5代表给age键增加5,而-1表示给age键减1,即正数为加,负数为减


13.decr


对某一个键做减减操作,同incr


例如:


redis 127.0.0.1:6379> set age 20
OK
redis 127.0.0.1:6379> decr age
(integer) 19
redis 127.0.0.1:6379> get age
"19"
redis 127.0.0.1:6379> get age1
(nil)
redis 127.0.0.1:6379> decr age1
(integer) -1
redis 127.0.0.1:6379> get age1
"-1"



14.decrby


同incrby,给某一键减去指定的值


redis 127.0.0.1:6379> decrby age 5
(integer) 14
redis 127.0.0.1:6379> get age
"14"



decrby 完全是为了可读性,我们完全可以通过incrby 一个负值来实现同样效果,反之一样。


15.append


给指定key 的字符串值追加value,返回新字符串值的长度。


例如:


redis 127.0.0.1:6379> set name lijie
OK
redis 127.0.0.1:6379> get name
"lijie"
redis 127.0.0.1:6379> append name
@li-jie.me
(integer) 15
redis 127.0.0.1:6379> get name
"lijie@li-jie.me"



16.strlen


取指定key 的value 值的长度。


例如:


redis 127.0.0.1:6379> get name
"lijie@li-jie.me"  
redis 127.0.0.1:6379> strlen name
(integer) 15
redis 127.0.0.1:6379> get age

"20"
redis 127.0.0.1:6379> strlen age
(integer) 2



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值