• 重要概念

redis是单线程模型,所有命令都会进入一个队列,然后依次被执行。

  • 全局命令
>>>select dbindex       #切换数据库,默认有16个库,库标识符为0-15
>>>keys pattern #列出匹配模式的键(*、?、[]、[^])
>>>dbsize #键总数
>>>exists key #检查键是否存在
>>>del key #删除键
>>>expire key #键过期设置
>>>type key #键类型
>>>object encoding key #显示值的内部编码
>>>rename key newkey #键重命名
>>>renamenx key newkey #键重命名,确保只有newkey不存在时才重命名,防止覆盖
>>>randomkey #随机返回一个键
>>>expire key seconds #键在seconds秒后过期,过期时间为负数,键会立即删除,犹如del命令
>>>pexpire key milliseconds #键在milliseconds毫秒后过期
>>>expireat key timestamp #键在秒级时间戳timestamp后过期
>>>ttl/pttl key #查询键的过期时间(状态:大于等于0的整数、-1、-2)
>>>persist key #将键的过期时间清除
>>>migrate host port key|"" dist-db timeout [copy] [replace] [keys key...] #迁移键
  • 字符串类型命令
>>>set key value [ex seconds] [px milliseconds] [nx|xx]  #ex,px过期时间   nx不存在|xx存在
>>>setex key seconds value #等同于set..ex 创建时键值时设置过期时间
>>>setnx key value #等同于set..xx 键不存在才创建
>>>get key #获取值
>>>mset key value [key value ...] #批量设置值(节省多次网络传输时间)
>>>mget key [key ...] #批量获取值(节省多次网络传输时间)
>>>incr key #值为整数才自增1,默认从0开始,其他值报错
>>>decr key #自减1
>>>incrby key increment #自定义自增值(可以是负数)
>>>decrby key decrement #自定义自减值(可以是负数)
>>>incrbyfloat key increment #自定义自增值为浮点数(也可以是整数、负数)
>>>hset key field value             #键 属性 值
>>>hget key
>>>hdel key field [field ...] #删除一个或多个field
>>>hlen key #计算field个数
>>>hmset key field value [field value ...]
>>>hmget key field [field ...]
>>>hexists key field #判断field是否存在
>>>hkeys key #获取所有的field
>>>hvals key #获取所有的value
>>>hgetall key #获取所有的field-value
>>>hincrby key field
>>>hincrbyfloat key field
>>>hstrlen key field #计算value的字符串长度
>>>rpush key value [value ...]       #右边插入元素
>>>lrange key start end/0 -1 #从左到右获取列表的元素/所有元素
>>>lpush key value [value ...] #左边插入元素
>>>linsert key before|after pivot value #向某个元素前或者后插入元素
>>>lindex key index #获取列表指定索引下标的元素
>>>llen key #获取列表长度
>>>lpop/rpop key #从列表左边/右边弹出元素
>>>lrem key count value #删除列表中count个value值(count<0代表从右向左删除)
>>>ltrim key start end #按照索引范围保留start到end的值
>>>lset key index newvalue #修改索引为index的值
>>>blpop/brpop key [key ...] timeout #阻塞式弹出,timeout为0将一直阻塞

  在使用brpop时,有4点需要注意:

  1. 列表为空: 如果timeout=3,那么客户端要等到3秒后返回,如果 timeout=0,那么客户端一直阻塞等下去,直到列表添加了数据;
  2. 列表不为空: 客户端会立即返回;
  3. 如果是多个键,那么brpop会从左至右遍历键,一旦有一个键能弹出元素,客户端立即返回;
  4. 如果多个客户端对同一个键执行brpop,那么最先执行brpop命 令的客户端可以获取到弹出的值。

  实际上列表的使用场景很多,在选择时可以参考以下口诀:

  1. lpush+lpop=Stack(栈)
  2. lpush+rpop=Queue(队列)
  3. lpush+ltrim=Capped Collection(有限集合)
  4. lpush+brpop=Message Queue(消息队列)
>>>sadd/srem key element [element ...]    #添加/删除元素
>>>scard key #计算元素个数
>>>sismember key element #判断元素是否在集合中
>>>srandmember key [count=1] #随机从集合中返回指定个数元素,元素不会删除
>>>spop key [count=1] #随机从集合中弹出元素,元素会删除
>>>smembers key #获取所有元素
>>>sinter key [key ...] #求多个集合的交集
>>>sunion key [key ...] #求多个集合的并集
>>>sdiff key [key ...] #求多个集合的差集
>>>sinterstore destination key [key ...] #求多个集合的交集并保持,下同
>>>suionstore destination key [key ...]
>>>sdiffstore destination key [key ...]
  • 有序集合[4]

>>>zadd key [NX|XX] [CH] [INCR] score member [score member ...]  #添加成员
>>>acard key #计算成员个数
>>>zrank key member #顺序计算成员排名(从低到高)
>>>zrevrank key member #逆序计算成员排名(从高到低)
>>>zrem key member [member ...] #删除成员
>>>zincrby key increment member #增加成员的分数
>>>zrange key start end [withscores] #返回指定排名范围的成员[分数]
>>>zrevrange key start end [withscores] #同上,逆序
>>>zrangebyscore key min max [withscores] [limit offset count]
#返回指定分数范围的成员,同时min和max还支持开区间(小括号)和闭区间(中括号),-inf和+inf分别代表无限小和无限大:
127.0.0.1:6379> zrangebyscore user:ranking (200 +inf withscores
1) "tim"
2) "220"
3) "martin"
4) "250"
5) "tom"
6) "260"
>>>zrevrangebyscore key max min [withscores] [limit offset count] #同上,逆序
>>>zcount key min max #返回指定分数范围成员个数
>>>zremrangebyrank key start end #删除指定排名内的升序元素
>>>zremrangebyscore key min max #删除指定分数范围的成员
>>>zinterstore destination numkeys key [key ...] [weights weight [weight ...]] [aggregate sum|min|max] #交集
>>>zunionstore destination numkeys key [key ...] [weights weight [weight ...]] [aggregate sum|min|max] #并集

  1. 映射关系为 key field-value

  2. 列表是有序且可重复的,可以获取指定范围或指定索引下标的元素,索引由0开始

  3. 集合(set)不允许有重复元素,且集合是无序的,不能通过下标获取元素,支持多个集合取交集、并集和差集

  4. 保留了集合不能有重复成员的特性, 但不同的是,有序集合中的元素可以排序。但是它和列表使用索引下标作为排序依据不同的是,它给每个元素设置一个分数(score)作为排序的依据

最新文章

  1. Oracle 中的操作符
  2. Sybase 常用SQL
  3. Xml游标
  4. sealed修饰符
  5. 结构体dict_table_t
  6. C#量转换为汉字表达
  7. EC读书笔记系列之10:条款16、17
  8. c# in deep 之Lambda表达式
  9. One-Way Reform
  10. linux 备份系统
  11. 微服务框架——SpringCloud(四)
  12. [05-01]Linux如何重启系统
  13. android HttpClient将数据提交到服务器
  14. hdu2158
  15. iOS Sprite Kit最新特性Physics Field虚拟物理场Swift測试
  16. js正则函数match、exec、test、search、replace、split使用介绍集合,学习正则表达式的朋友可以参考下。
  17. error:Your local changes to the follwing files would be overwritten by merge
  18. bzoj4753 最佳团体
  19. 【转】HP laserjet p2055dn的自动双面打印功能
  20. codeforces 659C C. Tanya and Toys(水题+map)

热门文章

  1. Java基础教程——Scanner类
  2. redis new
  3. 自学linux——18.FTP服务器的搭建
  4. JZOJ2020年8月11日提高组T1 密码
  5. 20200311_最新爬取mzitu
  6. PyQt(Python+Qt)学习随笔:QTabWidget选项卡部件的documentMode属性作用
  7. requests的再次学习
  8. css3实现立体魔方效果
  9. CSP-S2020 浙江 游记
  10. Node第三方模块nodemon和nrm