echo编辑整理,欢迎转载,转载请声明文章来源。欢迎添加echo微信(微信号:t2421499075)交流学习。 百战不败,依不自称常胜,百败不颓,依能奋力前行。——这才是真正的堪称强大!!!php
最基本也是最经常使用的数据类型就是String,对应的操做命令也比较简单的,有get/set/del等;它的对应的值能够是任何种类的字符串,最大保存长度512MB。基本命令的使用以下:java
set name echo get name del name set key 1 incr key decr key incrby key 20 decrby key 20 incrbyfloat key 2.1 set name ab append name c getrange name 1 5 strlen name mget name1 name2 name3 mset name4 echo4 name5 echo5 name6 echo6
setnx name echo 若是name存在就返回0存入不成功,若是name不存在就返回1存入成功。
基于该特性咱们能够用它来实现分布式锁。可是注意:使用改特性也有一个缺点就是,可能会形成死锁。若是咱们在使用过程中,使用del key释放锁,有可能会释放锁失败,致使其余操做永远获取不到锁。当让咱们也能够对ke设置过时时间,可是也会有相同的问题。解决方案:python
对于该数据类型,我以为用list一点也不贴切,应该叫作:有序的队列,才合适。毕竟list是无序的,并且也没有前后一说。基本操做命令以下:redis
lpush queue a lpush queue b c rpush queue d e lpop queue rpop queue lindex queue 0 lrange queue 0 -1 ltrim queue 0 3 del queue llen queue brpop queue 50
brpop queue 60 若是queue队列中存在元素,直接弹出最右边的按个元素,若是不存在,轮询等待60s。超时,直接返回null。
该数据结构有一个明显的特色,那就是有序,不论是从左边存入仍是右边存入,都可以有效的实现队列的进出。咱们能够看到最后一个条命令,它实际上是redis提供的一个高级操做,利用list队列的特性,实现了阻塞式访问,咱们可使用该功能作一个简单的发布订阅功能。若是存入数据做为发布消息,使用brpop阻塞式访问来订阅。ruby
Redis中Set 是 String 类型的无序集合。该集合有set集合的属性,元素惟一, 因此对应的redis set数据成员是惟一的,这就意味着集合中不能出现重复的数据。微信
sadd myset a b c d e f g smembers myset scard myset srandmember key spop myset srem myset d e f sismember myset a sdiff set1 set2 sinter set1 set2 sunion set1 set2
在set中,元素都不是重复的,因此咱们能够用它来记录一些惟一的值。这几个基本的命令里面咱们能够看到有一个spop myset 随机弹出一个元素,利用set的惟一性,和随机弹出元素的特性,咱们可使用set集合实现一个抽奖活动。将全部人的id存入set集合中,而后使用spop随机弹出元素,弹出的元素id就是中奖人。数据结构
zset和Set类型极为类似,它们都是字符串的集合,都不容许重复的成员出如今一个Set中。它和set集合的区别只去在于zset是有序的,set是无序的。并且set的存储和zset的存储不同app
zadd myzset 10 java 20 php 30 ruby 40 cpp 50 python zrange myzset 0 -1 withscores zrevrange myzset 0 -1 withscores zrangebyscore myzset 20 30 zrem myzset php cpp zcard myzset zincrby myzset 5 python zcount myzset 20 60 zrank myzset java zscore myzset java
zset是一个有序的集合,它的排序是根据score来进行的,因此咱们可使用该特性来实现一个最热文章的功能,当文章的热度上涨以后,咱们对文章对应score来进行递增便可。分布式
Redis的哈希数据类型存储的是一个string类型的field和value的映射表,hash适合存放对象学习
hset h1 f 6 hmset h1 a 1 b 2 c 3 d 4 hget h1 a hmget h1 a b c d hkeys h1 hvals h1 hgetall h1 hexists h1 f hdel h1 f hlen h1
hash的操做和咱们java开发中操做map很相似,好比添加一个key为h一、field为f、value为6的hash值,在java中就至关于建立一个名字为h1的map,存入key为f,value为6的键值对。该数据结构的特色很适合咱们在业务中存放对象,好比使用他来实现购物车。将hash设计成为后面这种模式便可:key:用户 id;field:商品 id;value:商品数量。商品在购物车中的数据量使用以下命令来实现便可
对咱们的hash值来进行加1 hincrby h1 d 1 对咱们的hash值来进行减1 hincrby h1 d -1
作一个有底线的博客主