Redis拾遗(一)

最近看了一本好书《Redis开发与运维(付磊)》,感觉里面讲解深入浅出,实在受益匪浅,遂记录点滴。

Redis八个重要特性:

  1. 速度快:全部数据储存在内存,这一点就不知道比别的快了多少。C语言实现。单线程,避免多线程存在的竞争问题。
  2. 基于键值对的数据结构服务器
  3. 丰富的功能:提供键过期机制,可用于缓存。提供订阅发布功能,可用做实现消息系统。支持Lua脚本。简单的事务功能。提供pipeline功能,一次性传输数据,避免网络开销。
  4. 简单稳定
  5. 支持语言多
  6. 持久化:RDB和AOF,可将数据保存到硬盘,不会掉电消失。
  7. 主从复制
  8. 高可用和分布式

全局命令:

  1. 查看所有键:keys *  时间复杂度:O(n)
  2. 键总数:dbsize  时间复杂度O(1) 因为内部有键总数变量
  3. 查看键是否存在:exists key
  4. 删除键:del key [key1] 返回结果为删除成功的键数
  5. 键过期:expire key seconds 
  6. 键剩余过期时间:ttl  key   返回值:大于0的整数,键剩余过期时间,-1键没设置过期时间,-2键不存在
  7. 键的数据结构类型:type key  键不存在则返回none
  8. 查询内部编码:object encoding key 

字符串:

  1. 键值最大不能超过512M
  2. 设置命令:set key value [ex seconds] [px milliseconds] [nx|xx]  
    1. ex seconds: 为键设置秒级过期时间。
    2. ·px milliseconds: 为键设置毫秒级过期时间。
    3. ·nx: 键必须不存在, 才可以设置成功, 用于添加
    4. .xx :键必须存在,用于更新键
  3. setex  setnx  命令为开关ex nx简写命令
  4. 获取值:get key 不存在返回nil
  5. 批量设置值:mset key1 val1 key2 val2...
  6. 批量获取值:mget key1 key2...
  7. 批量操作节省网络开销
  8. 自增:incr key 键存在且为整数时,执行后加一,键为非整数报错,键不存在返回1
  9. 扩展:decr incrby decyby incrbyfloat
  10. 追加值:append key value
  11. 字符串长度:strlen key
  12. 设置并返回原值:getset key value
  13. 设置指定位置的字符:setrange key offeset value
  14. 获取部分字符串:getrange key start end
  15. 应用场景:
    1. 缓存功能
    2. 计数功能
    3. 共享session:解决分布式系统中session存在多个服务器中问题,集中在redis中读取
    4. 限速

哈希:

  1. 设置值:hset key field value
  2. 获取值:hget key field
  3. 删除field:hdel key field :返回成功删除field的个数
  4. 计算field个数:hlen key
  5. 批量操作:hmget key field1 field2...     hset key field1 val field2 val2
  6. 判断field是否存在:hexists key field
  7. 获取所有field :hkeys key
  8. 获取所有val:hvals key
  9. 获取所有field-val:hgetall key
  10. hincrby hincrbyfloat 
  11. 计算val长度:hstrlen key field  

不知不觉已经12点后了,困得不行,早点睡个“养生觉”吧,别的部分下回更新~See you

posted @ 2018-09-15 00:19  fly。  阅读(162)  评论(0编辑  收藏  举报