亲测有效 #后面为方法注释
Redis-Key类型
keys * #查看所有的key
set name linailong #set key
keys *
结果为:name
set age 1
keys *
结果为:"age" "name"
exists name #判断当前key是否存在
结果为: 1 1 为存在
expire name 10 #设置key 过期时间 单位秒
ttl name #查看key剩余时间
type name # 查看当前key的一个类型
String类型
set key1 v1 #设置值
get key1 #获取值
exists key1 #判断一个key是否存在
append key1"hello" #追加字符串,如果当前key不存在,就相当于set key
strlen key1 #获取字符串长度
---------------------------------------------------------------------------------------------------------------------
i++
步长 i+=
set views 0 #初始化浏览量为0
incr views #自增1 浏览量别为1
decr views #自减1 浏览量减1
incrby views 10 #可以设置步长,指定增量,这里增量为10
decrby views 3 #可以设置步长为3,指定减量 这里减量为3
---------------------------------------------------------------------------------------------------------------------
字符串范围 range
set key1 "hello,linailong" #设置key1的值
getrange key1 0 3 #截取字符串[0,3]
结果为:hell
getrange key1 0 -1 #获取全部的字符串
结果为:hello,linailong
---------------------------------------------------------------------------------------------------------------------
替换
set key2 abcdefg
setrange key2 1 xx #替换指定下标开始的字符串
结果为:axxdefg
---------------------------------------------------------------------------------------------------------------------
setex(set with expire) #设置过期时间
setnx(set if not exist) #key不存在则设置(在分布式锁中经常用到)
setex key3 30 "hello" #设置key3的值为hello 30秒后过期
setnx mykey "redis" #如果mykey不存在创建mykey
setnx mykey "MongoDB" #如果mykey存在,创建失败
get mykey #结果依然为redis不是MongoDB
---------------------------------------------------------------------------------------------------------------------
mset
mget
mset k1 v1 k2 v2 k3 v3 #同时设置多个值
keys *
结果为 k1 k2 k3
mget k1 k2 k3 #同时获取多个值
结果为:v1 v2 v3
msetnx k1 v1 k4 v4 #msetnx是一个原子性操作,要么一起成功要么一起失败
get k4
结果为:(nil)
---------------------------------------------------------------------------------------------------------------------
对象
set user:1{name:zhangsan,age:3} # 设置一个user:1对象值为json字符串来保存一个对象
#这里的key是一个巧妙的设计user:{id}:{filed},如此设计在redis中完全可以
mset user:1:name zhangsan user:1:age 2
mset user:1:name user:1:age
结果为:zhangsan 2
---------------------------------------------------------------------------------------------------------------------
getset #先get然后在set
getset db redis #如果不存在值,则返回(nil)
get db
结果为:redis
getset db mongodb #如果存在值,获取原来的值并设置新的值
结果为:redis
get db
结果为:"mongodb "
---------------------------------------------------------------------------------------------------------------------
小结:
String类似的使用场景:value除了是我们的字符串还可以是我们的数字
1,计数器
2,统计多单位的数量
3,分数数
4,对象缓存存储
List类型
:所有list命令都是用l开头的
LPUSH list one #将一个值或多个值,插入到列表头部(左)
LPUSH list two
LPUSH list three
lrange list 0 -1 #获取当前list中的值
结果为:three,two,one
lrange list 0 1 #通过区间获取具体的值
结果为:three,two
Rpush list right #将一个值或者多个值,插入到列表头部(右)
Lrange list 0 -1
结果为:three,two,one,right
---------------------------------------------------------------------------------------------------------------------
LPOP
RPOP
lpop list #移除list的第一个元素
结果为:移除three
rpop list #移除list的最后一个元素
结果为:right
---------------------------------------------------------------------------------------------------------------------
llen #返回列表的长度
llen list #返回列表的长度
---------------------------------------------------------------------------------------------------------------------
lrem #移除指定的值
lrem list 1 one #移除list集合中指定个数的value精确匹配
---------------------------------------------------------------------------------------------------------------------
rpoplpush #移除列表的最后一个元素,将他移动到新的列表中
rpush mylist hello
rpush mylist hello1
rpush mylist hello2
rpoplpush mylist myotherlist #移除列表的最后一个元素,将他转移到新的列表中
lrange mylist 0 -1
结果为:hello,hello1
lrange myotherlist 0 -1
结果为hello2
---------------------------------------------------------------------------------------------------------------------
lset #将列表中指定下标的值替换成为另一个值,更新操作
lpush list value1
lrange list 0 0
结果为:value1
lset list 0 item
lrange list 0 0
结果为:item
#注意,如果下标不存在这报ERR index out of range
---------------------------------------------------------------------------------------------------------------------
小结:
1,list实际上是一个链表,
2,如果key不存在,创建新的链表
3,如果key存在,新增内容
4,如果移除了所有的值,空链表,也代表不存在
5,在两边插入或者改动值,效率最高!中间元素,相对来说效率第一点
Set类型
sadd myset hello #向set集合中添加数据
smembers myset #查看set中所有的值
sismember myset hello #判断一个值在不在set中
scard myset #获取set中的内容元素
srem myset hello #移除set集合中指定的元素
---------------------------------------------------------------------------------------------------------------------
因为set无序不重复集合,随机抽取
srandmember myset #随机抽取一个元素
srandmember myset #随机抽取指定数量元素