除了存取数据,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. 解决Visiual Studio2012 CLR20r3问题

    解决办法: 步骤1:开始-->所有程序-->Microsoft Visual Studio 2012-->Visual Studio Tools-->VS2012 开发人员命令 ...

  2. Cookie seesion 赋值

    后台赋值: Session["uid"] = userid;//后台 后台取值: Label1.Text = Session["userid"].ToStrin ...

  3. docker网络模式----入门docker的难点

    众所周知,现在docker是轻量级虚拟化的典型代表!这段时间想要建立一个分布式系统,但是手头上主机没那么多,所以使用docker进行虚拟化,但是在使用的过程中对网络这一部分是一直不太理解,特别找了一篇 ...

  4. ubuntu安装hadoop经验

    安装环境: 1 linux系统 2 或(windows下)虚拟机 本文在linux系统ubuntu下尝试安装hadoop 安装前提 1 安装JDK(安装oracle公司的JDK ) (1)检查是否已安 ...

  5. 本地机器和windows2003远程桌面之间复制粘贴文件

    打开远程桌面连接-->选项-->本地资源-->磁盘驱动器 前面打勾然后再连接就可以了.

  6. 编译 ambari 2.7.3

    官方给的教程比较简单,需要事先安装的工具也是这里列一点,那里列一点.在此记录一下编译要点(在 centos 7 下). 1. 事先需要安装的工具 yum install -y git svn node ...

  7. OAuth实现腾讯微博第三方登录

    前言 还是得弱弱的写下这个技术的背后,大概是这个样子的,看到OAuth这个单词,我就想到了权限这个词,不知道为什么,又想起了第三方登录这个技术,于是自己脑补了一下,应该这两个东西是有关系的.再就是去动 ...

  8. P3941 入阵曲

    \(\color{#0066ff}{ 题目描述 }\) 小 F 很喜欢数学,但是到了高中以后数学总是考不好. 有一天,他在数学课上发起了呆:他想起了过去的一年.一年前,当他初识算法竞赛的 时候,觉得整 ...

  9. DP【洛谷P2134】 百日旅行

    [洛谷P2134] 百日旅行 题目背景 重要的不是去哪里,而是和你在一起.--小红 对小明和小红来说,2014年7月29日是一个美好的日子.这一天是他们相识100天的纪念日. (小明:小红,感谢你2场 ...

  10. 微信小程序传数组(Json字符串)到Java后端

    一:小程序端: wxml中代码: <!--index.wxml--> <view> <view> <button bindtap="onShow&q ...