五大基本数据类型
基本使用
keys * # 查看所有的key
set key value #存储key-value键值对
keys * #查看全部键值对
exists key #判断当前key是否存在
move key 1 #移除当前的key 1表示当前数据库号
get key #获取当前key的value
expire key 10 #设置key的过期时间,单位为秒
ttl key #查看当前key的剩余过期时间
type name #查看当前key的类型
String(字符串)
set key val #设置值
get key #获得值
keys* #获得所有key
exists key #判断某一个key是否存在
append key hello #追加某个key的value值。如果key不存在,则相当于创建
strlen key #获取字符串的长度
incr views # 自增1 浏览量变为1
decr views # 自减1 浏览量-1
incrby views 10 # 设置步长,指定增量10
decrby views 5 #设置步长,指定减量5
getrange key 0 3 #截取字符串 [0,3] 不影响原字符串
getrange key 0 -1 #获取全部字符串 相当于get key
setrange key 1 xx #从1位置开始替换指定字符xx
# setex (set with expire) # 设置过期时间
# setnx (set if not exist) # 不存在在设置 (在分布式锁中会常常使用!)
setex key 30 value #设置key-value并指定三十秒后过期
setnx key redis #如果key不存在,创建key,存在则创建失败!
mset k1 v1 k2 v2 k3 v3 #同时设置多个值
mget k1 k2 #同时获得多个值
msetnx k1 v1 k4 v4 # msetnx 是一个原子性的操作,要么一起成功,要么一起失败!
# 对象
set user:1 {name:zhangsan,age:3} # 设置一个user:1 对象 值为 json字符来保存一个对象!
# 这里的key是一个巧妙的设计: user:{id}:{filed} , 如此设计在Redis中是完全OK了!
getset db mongodb # 先get在set 如果存在值,获取原来的值,并设置新的值
小结
String类似的使用场景:value除了是我们的字符串还可以是我们的数字!
—计数器
—统计多单位的数量
—粉丝数
—对象缓存存储!
List(列表)
可以看作栈,队列,阻塞队列,所有list命令以l开头。
lpush list one two #将一个值或者多个值,插入到列表头部 (左)
Rpush list righr # 将一个值或者多个值,插入到列表位部 (右)
LRANGE list 0 -1 # 获取list中值!0为左下标 -1表示右无穷即全部
Lpop list # 移除list的第一个元素
Rpop list # 移除list的最后一个元素
lindex list 1 # 通过下标获得 list 中的某一个值!
Llen list # 返回列表的长度
lrem list 1 one # 移除list集合中指定个数的value,精确匹配 1表示移除的个数因为list可以重复添加
ltirm list 1 2 # 通过下标截取指定的长度,这个list已经被改变了,截断了只剩下截取的元素!
rpoplpush list otherlist #移除列表的尾部元素,添加到新列表的头部
lset list 0 item #将列表指定下标的值替换为另一个值,如果不存在列表则报错,存在则修改
linsert list before one item #将item插入到one的前面 after插入后边
小结
1.他实际上是一个链表,before Node after , left,right 都可以插入值
2.如果key 不存在,创建新的链表
3.如果key存在,新增内容
4.如果移除了所有值,空链表,也代表不存在!
5.在两边插入或者改动值,效率最高! 中间元素,相对来说效率会低一点~
Set(集合)
set中的值是不能重读的,无序的。
sadd set one #set集合中添加元素()
smembers set #查看set的全部元素
sismember set one #判断one是否在set中
scard set #获取set中元素的个数
srem set one #移除one从set中
srandmember set 2 #随机抽取指定个数的元素 不写默认为1
spop set #随即删除set中的元素
smove set set2 one #将one从set移动到set2
sdiff set1 set2 #求差集(set1中set2没有的元素)
sinter set1 set2 #交集(共同好友)
sunion #并集
小结
实际用途:微博,A用户将所有关注的人放在一个set集合中!将它的粉丝也放在一个集合中!共同关注,共同爱好,二度好友,推荐好友!(六度分割理论)
Hash(哈希)
Map集合,key-map! 时候这个值是一个map集合! 本质和String类型没有太大区别,是一个简单的
key-vlaue!
hset hash k1 v1 #set一个键值对
hget hash k1 # 获取一个字段值
hmest hash k1 v1 k2 v2 # set多个 key-vlaue
hmget hash k1 k2 # 获取多个字段值
hgetall hash #获取全部数据
hkeys hash #获取全部key
hvals hash #获取全部value
hdel hash k1 #删除指定key-value
hlen # 获取hash表的字段数量!
hexists hash k1 #判断指定字段是否存在
hincrby hash k1 5 #指定增量5
hdecrby hash k1 5 #指定减量5
hsetnx hash k1 v1 #如果不存在k1则添加成功,否则失败if not exist
小结
hash变更的数据 user name age,尤其是是用户信息之类的,经常变动的信息! hash 更适合于对象的
存储,String更加适合字符串存储!
Zset(有序集合)
在set的基础上,增加了一个值, zset k1 score1 v1 ,score1表示理解为权重 可用来比较,也代表了插入顺序。
zadd zset 1 one 2 two 3 three #添加一个值或多个值
zrange set 0 -1 #查看全部值
zrangebyscore zset -inf +inf #从小到大排序显示 -inf负无穷 +inf正无穷
zrevrange zset 0 -1 #从大到小进行排序显示
zrangebyscore zset -inf +inf withscores #从小到大带分数排序显示
zrem zset one #移除元素
zcard zset #获取长度 即个数
zcount zset 1 3 #获取指定区间成员数量
小结
实际应用:
1.set 排序 存储班级成绩表,工资表排序!
2.普通消息,1, 重要消息 2,带权重进行判断!
3.排行榜应用实现,取Top N 测试等!