除了存取数据,redis还可以支持mq等操作,这里面有些小细节,需要注意一下:
----------------------------------------
1、事务处理
  大家都说redis支持事务,但实际上redis的事务跟关系数据库的事务不一样。不支持rollback操作。
redis的事务会先有一个将命令放入队列的过程,如果成功放入队列,返回值为queue,否则为失败。如果某个命令放入队列时报错,那么客户端会终止事务,并且丢掉这个事务;但在2.6.5版本之前,即使发生了错误,也没有丢弃事务,如果执行exec,则仍然会执行所有已放入队列的命令。
综上:只要成功放入队列的命令,redis就会坚定不移的执行;执行过程中如果发生错误,也不会回滚,只是会把所有命令执行结果返回客户端,需要客户端自行处理。
所以,redis的事务实际不是我们理解的关系数据库的事务,redis的事务实际上就是提供了一次性执行某些命令的方式,该执行过程中不会被其它客户端打扰。redis的事务连原子性(数据库事务的原子性,不回滚,所以不满足)都不满足!!!

2、慢查询
  redis是为高并发设计的,最高并发在8-11w/s。因为redis是单线程的,所以如果有操作速度比较慢,那后果将是极其严重的,因为这会阻塞其它客户端对redis的访问。
  redis除了string,其它类型并没有对value的大小做出限制,理论上可以存放redis最大内存大小的数据。假设我们要存一个100M的文件到redis,可想而知,肯定快不了;
  redis关于慢查询的配置有两个:
  slowlog-log-slower-than 10000 -- 慢查询时间设置,大于此时间的操作会被记录到慢查询日志中,单位是微秒,1ms = 1000 millionsecond
  slowlog-max-len 128 --慢查询日志长度
  慢查询日志是存放于内存中的一个list,默认长度128,因为在内存中,操作速度极快,因此是否开启慢查询日志对redis性能的影响微乎其微。
  对于线上slow-max-len配置的建议:线上可加大slow-max-len的值,记录慢查询存长命令时redis会做截断,不会占用大量内存,线上可设置1000以上;
  对于线上slowlog-log-slower-than配置的建议:默认为10毫秒,根据redis并发量来调整,对于高并发比建议为1毫秒
  注意:慢查询只记录命令在redis的执行时间,不包括排队、网络传输时间。慢查询是先进先出的队列,访问日志记录出列丢失,需定期执行slow get,将结果存储到其它设备中(如mysql);
  如果发生了无法忍受的慢查询,一般处理办法有:
  1、对数据切分,将大数据切分为多个小数据进行操作;
  2、另起缓存,专门用于慢查询业务操作,避免拖慢系统公用redis速度。
  另:这里插一句,上面我们说假设要存100M的对象到redis,那么如果真的这么做,应该用redis的哪种数据类型呢?显然是string,因为其它的都不合适嘛。一般这种操作都是压缩后转为字节流处理,而且由于存取较慢,一般不跟主redis库放一起,以免影响业务高峰期的正常业务处理。除了放大文件要比较警惕,redis自己的内存一般也不建议太大,原因参考:http://blog.csdn.net/rofth/article/details/51480376
  其它待补充。

3、发布订阅
  redis的发布订阅就是用的 发布-订阅模式(观察者模式)实现的,存放了一个map跟一个list,map放所有的主题,list放客户端列表,如果一个主题有了消息,会根据map的value找到list中的客户端列表,然后逐个给客户端发消息。

4、持久化到硬盘
  redis的持久化方案有RDB跟AOF两种,RDB就是快照模式,AOF指日志模式,默认采用RDB模式。
  RDB模式因为快照生成的备份文件后缀为.rdb而命名,aof是因为把所有操作保存于一个后缀为.aof的文件二命名;
  RDB的原理是根据conf设置的条件,如果满足,则将另起线程,将当前redis中的数据被分到某个文件;AOF的原理是将redis收到的所有操作指令保存到一个日志文件。
  RDB速度快,而且由于是另起线程进行保存,基本对redis无影响,一般生产采用该模式。AOF因为所有操作都要记录一个日志文件,会严重影响redis性能,但由于实时记录,如果发生宕机,能非常好的还原数据。aof看似美好,实际几乎没人用,因为使用redis的出发点之一就是性能高,而这个会影响能能;数据的问题,一般采用双机备份的机制,即一台redis主机对应一台redis备机,采用RDB机制,如果主机宕机,马上切换到备机,如果备机也坏了,那最坏的情况还是有最近的rdb备份不是。
  rdb跟aof的配置都在redis.conf中配置,rdb可以配置多条配置,同时生效。aof因为记录了所有操作命令,文件会比较大,因此有压缩机制,也就是rewrite的过程,这个压缩不是读aof文件进行去重操作,而是利用的快照机制来做的。
  rdb文件的存储格式跟解读参照:http://www.cnblogs.com/huangxincheng/p/5074998.html
5、运维监控
  对redis实时监控的软件,有redislive跟treeNMS两个,TreeNMS为国产软件,也挺好的;
 
-------------------------------------
先这么多吧,碰到了再补充
 

 
 
 
 

redis要注意的一些知识的更多相关文章

  1. redis哨兵架构的基础知识及部署和管理

    一.前言 1.哨兵的介绍 sentinal,中文名是哨兵 哨兵是redis集群架构中非常重要的一个组件,主要功能如下 ()集群监控,负责监控redis master和slave进程是否正常工作 ()消 ...

  2. redis:安装及基础知识(一)

    Redis官网:https://redis.io/ Redis中文网:http://www.redis.cn/ Redis 是一个开源的,内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件. ...

  3. 三:redis启动后的基础知识

    Redis启动后的杂项基础知识 1.单进进程 单进程模型来处理客户端的请求.对读写等事件的响应是通过对epoll函数的包装来做到的.Redis的实际处理速度完全依靠主进程的执行效率       Epo ...

  4. Redis命令总结及其基础知识讲述

    1.redis的不同之处 Redis拥有其他数据库不具备的数据结构,又拥有内存存储(这使得redis的速度非常快),远程操作(使得redis可以与多个客户端和服务器进行连接).持久化(使得服务器可以在 ...

  5. Redis源码研究—基础知识

    1. Redis 是什么 Redis是一个开源的使用ANSI C语言编写的基于内存的key/value存储系统,与memcache类似,但它支持的value类型更多,包括:字符串(string).链表 ...

  6. [Redis知识体系] 一文全面总结Redis知识体系

    本系列主要对Redis知识体系进行详解.@pdai Redis教程 - Redis知识体系详解 知识体系 学习资料 知识体系 知识体系 相关文章 首先,我们通过学习Redis的概念基础,了解它适用的场 ...

  7. 2、Redis入门介绍

    1.什么是Redis Redis:REmote DIctionary Server(远程字典服务器) 是完全开源免费的,用C语言编写的,遵守BSD协议,是一个高性能的(key/value)分布式内存数 ...

  8. 超强、超详细Redis数据库入门教程

    这篇文章主要介绍了超强.超详细Redis入门教程,本文详细介绍了Redis数据库各个方面的知识,需要的朋友可以参考下 [本教程目录] 1.redis是什么2.redis的作者何许人也3.谁在使用red ...

  9. Redis入门指南

    随着互联网业务对性能需求日益强烈,作为Key/Value存储的Redis具有数据类型丰富和性能表现优异的特点.如果能够熟练地驾驭它,不管是把它用做缓存还是存储,对很多大型应用都很多帮助.新浪作为世界上 ...

随机推荐

  1. passing parameter to an event handler [stackoverflow]

    Q: i want to pass my List<string> as parameter using my event public event EventHandler _newFi ...

  2. CENTOS 7 和 JDK 添加中文字体

    写在前面的话 当运维总是遇到各种奇奇怪怪的问题,比如新的 JAVA 项目上线,login 界面有个验证码,结果部署后发现,要么显示的奇奇怪怪,要么压根不显示. 或者在使用一些开源的 JAVA 项目的时 ...

  3. AppDelegate生命周期回调顺序

    1. 应用初次启动: - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDiction ...

  4. AISing Programming Contest 2019C(DFS,BFS)

    #include<bits/stdc++.h>using namespace std;int n,m;long long a=0,b=0,ans=0;char s[407][407];in ...

  5. 【bzoj2242】: [SDOI2011]计算器 数论-快速幂-扩展欧几里得-BSGS

    [bzoj2242]: [SDOI2011]计算器 1.快速幂 2.扩展欧几里得(费马小定理) 3.BSGS /* http://www.cnblogs.com/karl07/ */ #include ...

  6. sqlplus能登录但查询数据报ORA-00942: 表或视图不存在

    在表名前加表所属的用户就能查了: SELECT * FROM ABC.TABLENAME;(ABC是表的OWNER)

  7. phpsotrm 设置命名空间

    PHPStorm 添加支持 PSR-4 命名空间前缀设置 许久没有更新博客啦, 太忙了, 七月这最后一天来写点自己在使用 PHPStorm 上的小却很有用的功能吧. PHPStorm 默认是使用 PS ...

  8. POJ2676 (数独问题 + DLX + 状态优化顺序)

    (1)最简单的最是去暴力DFS搜索答案 , 很容易想到 , 每行每列的方式去搜索 , 不过效率是真的不行;但这个还是给出代码 ,毕竟打了也不容易呀! #include<cstdio> #i ...

  9. php内置web server

    今天刚开始正式学习PHP(之前有一点了解),推荐学习的网站是w3school.一开始不知道tomcat服务器不支持PHP脚本,直接把.php文件放到tomcat里面去运行,结果嵌入的php代码段没有什 ...

  10. 微软原版SQL Helper

    代码 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-- ...