redis简单介绍


Redis
VS key-value缓存产品
  • Redis支持数据的持久化,能够将内存中的数据保持在磁盘中,重新启动的时候能够再次载入进行使用。
  • Redis不只支持简单的key-value类型的数据,同一时候还提供list,set,zset,hash等复杂的数据结构的存储,而且提供对他们的原子性操作,这是一个不同于其它数据库的进化路径。Redis的数据类型都是基于基本数据结构的同一时候对程序猿透明。无需进行额外的抽象。

  • Redis支持数据的备份。即master-slave模式的数据备份。
  • Redis执行在内存中可是能够持久化到磁盘,所以在对不同数据集进行快速读写时须要权衡内存。应为数据量不能大于硬件内存。在内存数据库方面的还有一个长处是。 相比在磁盘上同样的复杂的数据结构。在内存中操作起来非常easy,这样Redis能够做非常多内部复杂性非常强的事情。 同一时候,在磁盘格式方面他们是紧凑的以追加的方式产生的,由于他们并不须要进行随机訪问。
Redis
VS Memcached
  • 在性能上,Redis是单线程模型,而Memcached支持多线程,所以在多核server上后者的性能更高一些。可是,Redis的性能已经足够优异,在绝大部分场合下其性能都不会成为瓶颈。
  • 假设须要用到高级的数据类型或持久化等功能,Redis将会是Memcached非常好的替代品。

Redis
优势
  • 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。

  • 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
  • 原子 – Redis的全部操作都是原子性的。同一时候Redis还支持对几个操作全并后的原子性运行。
  • 丰富的特性 – Redis还支持 publish/subscribe, 通知, key过期等等特性。

  • Redis不支持自己定义数据库名字,每一个数据库以编号命名。开发人员必须自己记录哪些数据库存储了哪些数据。

  • Redis也不支持为每一个数据库设置不同的password,所以一个client要么能够訪问所有数据库,要么连一个数据库也没权限訪问。
  • Redis的多个数据库之间不是全然隔离的,如FLUSHALL命令能够清空一个Redis实例中所有数据库中的数据。

锦囊

  • 在同一个Redis实例的不同数据库存储同样应用的数据
  • 不同应用的数据存放到不同的Redis实例中。

Redis能够用作存储,队列,缓存系统
  • Redis作缓存系统

    • Redis能够对每一个键设置生存时间
    • 能够限定数据占用的最大内存空间,在数据达到空间限制后能够依照一定规则自己主动淘汰不须要的键。

      设置方法: 改动配置文件的maxmemory參数,限制Redis最大可用内存大小(单位是字节),当超出了这个限制时Redis会根据maxmemory-policy參数指定的策略来删除不须要的键直到Redis占用的内存小于指定内存.

  • Redis作队列
    • 列表类型键能够用来实现队列,并支持堵塞时读取。能够非常easy地实现一个高性能的优先级队列。
停止Redis的方法
  • 通过向Redis发送SHUTDOWN命令,Redis会先断开全部client连接。然后依据配置运行持久化。最后完毕退出。

    $ redis-cli SHUTDOWN
  • Redis能够处理SIGTERM信号。使用kill redis_pid也能够正常结束Redis,效果与发送SHUTDOWN命令一样。

Redis命令的5种返回值类型:
  1. 状态回复

    OK表示设置成功 PING的PONG也是状态回复

  2. 错误回复

    以(error)开头。如

    redis>err_command
    (error)ERR unknown command 'err_command'
  3. 整数回复

    以(integer)开头,并在后面跟上整数数据

  4. 字符串回复

    以双引號包裹。比如

    redis> GET foo
    "1"
    redis> GET noexists
    (nil)
  5. 多行字符串回复

    当请求一个非字符串类型键的元素列表时,就会收到多行字符串回复。

    多行字符串回复中的每行字符串都以一个序号开头,如:

    redis> KEYS *
    1) "bar"
    2) "foo"

假设发现问题,欢迎轻拍留言交流。谢谢。

最新文章

  1. Masonry的使用
  2. 界面绚丽的SharePoint仪表盘控件Nevron Gauge for SharePoint 控件详细介绍
  3. PHP递归生成树形数组
  4. Tom and paper
  5. JVM监控与调优
  6. Pig与Hive的区别
  7. unique mapped reads
  8. linux 内存管理大图
  9. Powershell调用静态方法
  10. Flash,EEPROM差别
  11. LNAMP 中的PHP探针
  12. Linux之定时任务Crond使用
  13. 利用Delphi编写IE扩展
  14. 技术分享:几种常见的JavaScript混淆和反混淆工具分析实战【转】
  15. linux crypt()函数使用总结
  16. C#——LINQ语句
  17. MATLAB 矩阵处理基础
  18. C166 结构按字节访问的设置
  19. 企业应用--Nginx&web部署
  20. SpringMVC 拦截器实现

热门文章

  1. JSP学习笔记(一):JSP语法和指令
  2. hadoop中InputFormat 接口的设计与实现
  3. scala for循环
  4. hihoCoder 1261 String Problem II
  5. [ES6] 05. The leg keyword -- 3. Block Scope
  6. 用CSS下划线距离
  7. 将应用发布到WasLiberty的两种方法
  8. 数据库case,when学习
  9. Android获取手机位置代码实现
  10. 数据库选型之MySQL(固态硬盘)