redis五大数据类型
String(字符串)
# 设置值 set test test1 # 获取值 get test # 查看所有值 keys * # 判断值是否存在 EXISTS test # 追加值,如果没有相当于set APPEND test ',ceshichenggong' # 查看key的长度 strlen test # 数字类型增加1 INCR view # 数字类型减少1 DECR view # 指定增量为5 INCRBY view 5 # 指定减量为3 DECRBY view 3 # 截取字符串[1,4] GETRANGE key 1 4 # 获取全部的字符串,相当于get GETRANGE key 0 -1 ############################################## # setex (set with expire) #设置过期时间 # setnx (set if not exist) #不存在再设置(在分布式锁中会常常使用!) # 设置key1 的值为hello,30秒后过期 setex key1 30 'hello' # 查看还有多久过期 ttl key1 # 如果mykey不存在,创建mykey setnx mykey redis #如果mykey存在,创建失败! setnx mykey 'nihao' ############################################# #对象 # 设置一个user:1对象 值为json字符串来保存一个对象 set user:1 {name:zhangsan,age:3} # 获取对象值 get user:1 "{name:zhangsan,age:3}" # 这里的key是一个巧妙的设计:user:{id}:{filed},如此设计在Redis中是完全OK mset user:1:name zhangsan user:1:age 2 mget user:1:name user:1:age
LIst
基本的数据类型,列表;在redis里面,我们可以把list玩成栈,队列,阻塞队列,所有的List命令都是用L开头的
# 左边插入 LPUSH list one # 获取 LRANGE list 0 -1 # 右边插入 RPUSH list four # 获取 LRANGE list 0 -1 ################################### # 移除列表的右边第一个 RPOP list # 移除列表的左边第一个 ################################# # 查询值 Lindex list 1 # 移除值 lrem list 1 one
小结
- 他实际上是一个链表,before Node after , left,right都可以插入值
- 如果key不存在,创建新的链表
- 如果key存在,新增内容
- 如果移除了所有值,空链表,也代表不存在!
- 在两边插入或者改动值,效率最高!中间元素,相对来说效率会低一点~
set
set中的值是不能重复的!
# set集合中添加值 sadd myset hello # 查看指定set的所有值 smembers myset # 判断某一个值是不是在set集合中! SISMEMBER myset hello #移除set集合中的指定元素 srem myset hello # 查看集合中还有几个元素 scard myset # 随机抽选一个元素 srandmember myset # 随机抽选出指定个数的元素 srandmember myset 2 ######################################################## # 随机删除一些set集合中的元素! spop myset # 将一个指定的值,移动到另外的一个set集合中! smove myset myset2 "nihao" 数字集合类: - 交集 SINTER - 并集 SUNION - 差集 SDIFF
Hash(哈希)
Map集合,key-map!时候这个值是一个map集合!本质和String类型没有太大区别,还是一个简单的key-value!set myhash field xiaobo
hset myhash field1 xiaobo # set一个具体 key-value hget myhash field1 xiaobo # 获取一个字段值 hmget myhash field1 field2 # 获取多个字段值 hgetall myhash # 获取全部的数据 hdel myhash field1 # 删除hash指定key字段!对应的value值也就消失了! hgetall myhash hlen myhash # 获取hash表的字段数量! ####################################################### #只获得所有field #只获得所有value hkeys myhash #只获得所有field hvals myhash #只获得所有value
Zset(有序集合)
zadd myset 1 0ne #添加一个值 zadd myset 2 two 3 three #添加多个值 zadd salary 2500 zhangsan #添加三个值 zadd salary 5000 lisi zadd salary 500 wangwu zrangebyscore salary -inf +inf #从小到大排序 zrevrang salary 0 -1 #从大到小进行排序 zrangebyscore salary -inf +inf withscores #显示全部的用户并且附带成绩 zrangebyscore salary -inf 2500 withscores #显示工资小于2500员工的升降排序 ###################################################################### #移除rem中的元素 zrem salary xiaobo #移除有序集合中的指定元素 zcard salary #获取有序集合中的个数 zcount myset 1 3 #获取指定区间的成员数量!