除了存取数据,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. IIC协议解释

    IIC协议解释 (1)概述 I2C(Inter-Integrated Circuit BUS) 集成电路总线,该总线由NXP(原PHILIPS)公司设计,多用于主控制器和从器件间的主从通信,在小数据量 ...

  2. JavaScript 判断 Undefined 类型

    var cookiestr = ''; chrome.cookies.getAll( { 'url': 'https://mp.weixin.qq.com', 'secure': true }, fu ...

  3. .Net Core下基于NPOI对Excel、Word操作封装

    本库进行了重写,如果需要请转移到下文查看: https://www.cnblogs.com/holdengong/p/10889780.html 框架与依赖 框架:.NET Standard 2.0 ...

  4. 51nod 1350 斐波那契表示(递推+找规律)

    传送门 题意 分析 我们发现该数列遵循下列规律: 1 1,2 1,2,2 1,2,2,2,3 1,2,2,2,3,2,3,3 我们令A[i]表示f[i]开始长为f[i-1]的i的最短表示和 那么得到A ...

  5. Python第一次写的代码

    #!/bin/bash/env python # -*- coding:utf-8 -*- #function:输出1-10每隔1秒 import time start = 1 flag = True ...

  6. ubuntu14.04 搭建samba

        1.安装软件      sudo apt-get remove libwbclient0      sudo apt-get remove samba-common      sudo apt ...

  7. 小B的询问 莫队分块

    题目描述 小B有一个序列,包含N个1~K之间的整数.他一共有M个询问,每个询问给定一个区间[L..R],求Sigma(c(i)^2)的值,其中i的值从1到K,其中c(i)表示数字i在[L..R]中的重 ...

  8. [LOJ2027] [SHOI2016] 黑暗前的幻想乡

    题目链接 LOJ:https://loj.ac/problem/2027 洛谷:https://www.luogu.org/problemnew/show/P4336 Solution 这题很像[ZJ ...

  9. 黑马学习连接池 druid JdbcTemplate c3p0 池技术

    package cn.itcast.jdbctemplate; import org.junit.Test; import org.springframework.jdbc.core.BeanProp ...

  10. html表单笔记

    1.下面是 <form> 属性的列表: accept-charset 规定在被提交表单中使用的字符集(默认:页面字符集). action 规定向何处提交表单的地址(URL)(提交页面). ...