redis中String类型操作(一)

版权声明:如需转载,请写明出处 https://blog.csdn.net/weixin_43113679/article/details/90050103

掌握了这么多理论,还没有实战,这是非常不对的,我找到了一个特别牛的一个博客,很细致化,基本上都可以当redis实战文档了https://www.cnblogs.com/qlqwjy/category/1055870.html特别厉害,不光redis,只是我看到这个博客全部内容的大概就有点自行惭愧,但是我会加油的

命令示例

先打开redis-server,再开一个窗口进行操作,不要关闭第一个窗口
1. SET/GET/APPEND/STRLEN:

C:\Users\lenovo>redis-cli         //启动客户端
127.0.0.1:6379> key *              //查找全部的key值
(error) ERR unknown command 'key'
127.0.0.1:6379> exists mykey    //判断该键是存在,存在返回1,不存在返回0
(integer) 0
127.0.0.1:6379> append mykey "hello"  //往键 mykey 中添加值"hello",返回当前的长度,不存在创建此键值对
(integer) 5
127.0.0.1:6379> append mykey "word"  //存在后直接在值的尾部添加值"word",返回当前值的长度,空格也识别
(integer) 9
127.0.0.1:6379> get mykey  //获得该键的value
"helloword"
127.0.0.1:6379> set mykey "this is a test"  //往键为mykey的value设置新值,覆盖
OK
127.0.0.1:6379> get mykey  
"this is a test"
127.0.0.1:6379> strlen mykey  //获得指定key的字符长度,等效于C库中的strlen函数
(integer) 14

2. INCR/DECR/INCRBY/DECRBY:(增减)

127.0.0.1:6379> set mykey 20 //给mykey值为20
OK
127.0.0.1:6379> incr mykey    // 自增1   返回结果
(integer) 21
127.0.0.1:6379> decr mykey  //自减1,返回结果
(integer) 20
127.0.0.1:6379> del mykey  //删除已有键mykey
(integer) 1
127.0.0.1:6379> del mykey   //删除没有的键mykey
(integer) 0
127.0.0.1:6379> decr mykey //对空值执行递减操作,其原值被设定为0,递减后的值为-1
(integer) -1
127.0.0.1:6379> del mykey
(integer) 1
127.0.0.1:6379> incr mykey 对空值执行递增操作,其原值被设定为0,递减后的值为1
(integer) 1
127.0.0.1:6379> set mykey hello
OK
127.0.0.1:6379> get mykey
"hello"
127.0.0.1:6379> set mykey 10
OK
127.0.0.1:6379> get mykey //虽然返回的是integer类型的,但是存储的还是字符串形式的
"10"
127.0.0.1:6379> incrby mykey 10 //按10递增
(integer) 20
127.0.0.1:6379> decrby mykey 10 //按20递减
(integer) 0

3. GETSET:(获取值的同时修改值)

127.0.0.1:6379> incr mycounter //将计数器的值原子性的递增1
(integer) 1
127.0.0.1:6379> getset mycounter 0 //在获取计数器原有值的同时,并将其设置为新值,这两个操作原子性的同时完成。
"1"
127.0.0.1:6379> get mycounter //#查看设置后的结果。
"0"

4. SETEX:(设置存活时间)

127.0.0.1:6379> setex mykey 10 "hello"  //设置mykey存活 10 秒,内容为"hello",以秒为单位,建议时间长点,要不就要拼手速写下面的了
OK
127.0.0.1:6379> ttl mykey   //返回还剩多少秒过期
(integer) 6
127.0.0.1:6379> get mykey  //在没过期期间都可以获取它的value
"hello"
127.0.0.1:6379> ttl mykey //这时候就过期了,过去就返回-2,如果是没设置过期时间的就是永不过期返回-1,0就是正好时间没了
(integer) -2
127.0.0.1:6379> get mykey //过期再获得value就是nil了
(nil)
127.0.0.1:6379> exists mykey //也不存在了,存在是1,不存在时0
(integer) 0

5. SETNX:(键存在则不做修改,直接set会覆盖原值)

127.0.0.1:6379> del mykey  //先删除为下面的做准备
(integer) 0
127.0.0.1:6379> setnx mykey "hello"  //添加mykey value="hello"
(integer) 1                          //添加成功   
127.0.0.1:6379> setnx mykey "word" //再往相同的键里添加,添加失败
(integer) 0
127.0.0.1:6379> get mykey    //获得的value还是原来的,所以没有被覆盖
"hello"

6. SETRANGE/GETRANGE:(偏移量)

127.0.0.1:6379> set mykey "hello word"
OK
127.0.0.1:6379> get mykey
"hello word"
127.0.0.1:6379> setrange mykey 6 dd  //从索引为6的字节开始替换两个字节(dd只有两个字节,空格为1个字节)
(integer) 10
127.0.0.1:6379> get mykey //查看替换完成后的值
"hello ddrd"
127.0.0.1:6379> setrange mykey 0 f  //从这就能看出来索引是从0开始的,和java中的数组的索引是一样的
(integer) 11
127.0.0.1:6379> get mykey 
"fello ddrld"
127.0.0.1:6379> setrange mykey 20 dd //offset已经超过该Key原有值的长度了,该命令将会在末尾补0。
(integer) 22
127.0.0.1:6379> get mykey  //查看补0后替换的结果
"fello ddrld\x00\x00\x00\x00\x00\x00\x00\x00\x00dd"
127.0.0.1:6379> del mykey  //删除该 key
(integer) 1 
127.0.0.1:6379> setrange mykey 2 dd   //替换空值
(integer) 4 
127.0.0.1:6379> get mykey //查看替换空值后的结果,在dd前的空值补0
"\x00\x00dd"
127.0.0.1:6379> set mykey "0123456789"  //设置新值
OK
127.0.0.1:6379> getrange mykey 1 2 //截取该键的value,从第索引为1开始,2结束
"12"
127.0.0.1:6379> getrange mykey 1 20  //20已经超过value的总长度,因此截取索引为1后的所有的字节
"123456789"

7. SETBIT/GETBIT:(操作比特位)

127.0.0.1:6379> del mykey
(integer) 1
127.0.0.1:6379> setbit mykey 7 1   //设置从0开始计算的第七位BIT值为1,返回原有的BIT值为0
(integer) 0
127.0.0.1:6379> get mykey  //获取设置的结果,二进制的0000 0001的十六进制值为0x01
"\x01"
127.0.0.1:6379> setbit mykey 6 1 设置从0开始计算的第六位BIT值为1,返回原有BIT值0
(integer) 0
127.0.0.1:6379> get mykey  // 获取设置的结果,二进制的0000 0011的十六进制值为0x03
"\x03"
127.0.0.1:6379> getbit mykey 6 // 返回了指定Offset的BIT值。
(integer) 1
127.0.0.1:6379> getbit mykey 10//Offset已经超出了value的长度,因此返回0。
(integer) 0

8. MSET/MGET/MSETNX:(同时操作多个值)

127.0.0.1:6379> mset key1 "hello" key2 "world" //批量设置了key1和key2两个键。
OK
127.0.0.1:6379> mget key1 key2 //批量获取了key1和key2两个键的值
1) "hello"
2) "world"
127.0.0.1:6379> msetnx key3 "iuuu" key4 "liu" //批量设置了key3和key4两个键,因为之前他们并不存在,所以该命令执行成功并返回1。
(integer) 1
127.0.0.1:6379> mget key3 key4
1) "iuuu"
2) "liu"
127.0.0.1:6379> msetnx key3 "ww" key5 "pp" //批量设置了key3和key5两个键,但是key3已经存在,所以该命令执行失败并返回0。
(integer) 0
127.0.0.1:6379> mget key3 key5 //批量获取key3和key5,由于key5没有设置成功,所以返回nil。
1) "iuuu"
2) (nil)

猜你喜欢

转载自blog.csdn.net/weixin_43113679/article/details/90050103