Redis的数据类型
String类型以及操作
String是最简单的数据类型,一个key对应一个Value,String类型是二进制安全的。Redis的String可以包含任何数据,比如jpg图片或者序列化对象
Set
设置key对应的值为string类型的value
例如:我们添加一个name为lijie的键值对
127.0.0.1:6379> set name lijie OK 127.0.0.1:6379> get name "lijie" 127.0.0.1:6379> set name lambrother OK 127.0.0.1:6379> get name "lambrother"
我们再次设置name为lambrother,后面发现将前面的lijie覆盖了。
Setnx
设置key对应的值为string类型的value,如果key已经存在,返回0,nx是not exist的意思
例如我们添加一个name = lijie_new的键值对
127.0.0.1:6379> setnx name lijie_new (integer) 0 127.0.0.1:6379> get name "lambrother" 127.0.0.1:6379> setnx age 20 (integer) 1 127.0.0.1:6379> get age "20"
Setex
设置key对应的值为string类型的value,并指定键值对的有效期
例如:我们添加一个haircolor = red的键值对,并制定有效期为10秒
127.0.0.1:6379> setex haircolor 10 red OK 127.0.0.1:6379> get haircolor "red" 10秒后 127.0.0.1:6379> get haircolor (nil) nil指的是空的意思。 127.0.0.1:6379> setnx haircolor red (integer) 1 //验证了前面的键值对失效了。
Setrange
设置指定key的value值的子字符串
例如:我们希望将lijie的126邮箱替换成为gmail邮箱
127.0.0.1:6379> set email lijie@lambrother.net OK 127.0.0.1:6379> get email "lijie@lambrother.net" 127.0.0.1:6379> setrange email 6 li-jie.me //6代表的是原来字符串的开始替换位置的下标 (integer) 20 //20 代表的是新字符串的长度 127.0.0.1:6379> get email "lijie@li-jie.mer.net" //观察发现替换后的字符串如果长度没有原来字符串长,会将原来字符串的剩余依旧拼接
mset
一次设置多个key的值,成功返回ok表示所有的值都设置了,失败返回0表示没有任何值被设置
127.0.0.1:6379> mset key1 lijie1 key2 lijie2 OK 127.0.0.1:6379> get key1 "lijie1" 127.0.0.1:6379> get key2 "lijie2"
msetnx
一次设置多个key的值,成功返回ok表示所有的值都设置了,失败返回0表示没有任何值被设置,但是不会覆盖已经存在的key
127.0.0.1:6379> msetnx key3 lambrother key4 lijie@lambrother.net key2 lijie (integer) 0 127.0.0.1:6379> get key3 (nil) 127.0.0.1:6379> get key4 (nil) 127.0.0.1:6379> msetnx key3 lambrother key4 lijie@lambrother.net key5 lijie (integer) 1 127.0.0.1:6379> get key3 "lambrother" 127.0.0.1:6379> get key4 "lijie@lambrother.net" 127.0.0.1:6379> get key5 "lijie" 127.0.0.1:6379>
getset
设置key的值并返回旧的key值
127.0.0.1:6379> get key5 "lijie" 127.0.0.1:6379> getset key5 haha "lijie" 127.0.0.1:6379> get key5 "haha" 127.0.0.1:6379>
getrange
获取子字符串
127.0.0.1:6379> get email "lijie@li-jie.mer.net" 127.0.0.1:6379> getrange email 0 5 //获取email的value的0索引到5(包括5)索引的值 "lijie@" 127.0.0.1:6379>
mget
批量获取
127.0.0.1:6379> mget key1 key2 key3 key4 key5 key 6 1) "lijie1" 2) "lijie2" 3) "lambrother" 4) "lijie@lambrother.net" 5) "haha" 6) (nil) 7) (nil) 127.0.0.1:6379>
incr
对key的值做加加操作,并返回新的值
127.0.0.1:6379> set key6 30 OK 127.0.0.1:6379> get key6 "30" 127.0.0.1:6379> incr key6 (integer) 31 127.0.0.1:6379> incr key6 (integer) 32 127.0.0.1:6379> get key6 "32" 127.0.0.1:6379>
incrby
同incr类似,区别在于必须指定增量
127.0.0.1:6379> get key6 "37" 127.0.0.1:6379> incrby key6 5 (integer) 42 127.0.0.1:6379> incrby key6 -8 (integer) 34 127.0.0.1:6379>
decr
对key的值做减减操作
127.0.0.1:6379> decr key6 (integer) 33 127.0.0.1:6379> decr key6 (integer) 32
decrby
与decr类似,指定减量
127.0.0.1:6379> decrby key6 8 (integer) 24 127.0.0.1:6379> decrby key6 -7 (integer) 31
append
给指定key的字符串追加value,返回新字符串的长度
127.0.0.1:6379> get name "lambrother" 127.0.0.1:6379> append name .net (integer) 14 127.0.0.1:6379> get name "lambrother.net"
strlen
取指定key的value的长度
127.0.0.1:6379> strlen name (integer) 14