原创文章转载请注明出处:@协思, http://zeeman.cnblogs.com
 

redis是继memcached之后兴起的内存数据库,作者非常崇尚简洁高效,力求以最简单的方式最高效的解决问题,所谓大道至简。同时作者也很勤奋,经常尝试不同解决问题的方式来优化。

 
redis支持丰富的数据的数据结构,它们在特定场景下都有自己的用武之地。比如hash: 能提供同一类资源下所有健值的查询, ServiceStack的redis client就是基于此来封装Entity实现透明读写操作的。
 
为了支持不同数据结构的操作,提供了丰富的命令,实际上这就是和redis进行交互的方式。我在项目中用到redis保存json结构的数据,用命令查看并不方便,于是基于node.js提供rest api查询,在chrome浏览器中查看json方便了不少,后面有时间会整理开源到github。
 
redis的cluster模块还没有合并到稳定版本中,因此无法做到数据切片。Master/Slave也只能解决HA的问题,目前还是单机使用的场景比较多,这方面还比较弱。
 
redis曾经在早期版本中提供了使用磁盘来虚拟内存功能,但在新版本中已经取消,作者认为redis定位是内存数据库,在内存中操作数据是最高效的。因此,在产线部署redis要求内存足够,考虑fork进程持久化的问题,建议至少为缓存数据的两倍值。在实践中,我们发现内存紧张可能引发redis异常退出,所以没内存就不要玩redis。
 
redis提供了AOF和Snapshot两种方式来持久化数据,这两种持久化都不会影响缓存使用。前者是commit log方式,对数据的保障性最高,缺点是要准备足够的磁盘空间。另外要注意在特别严格的场景下,要关闭操作系统写缓存(appendfsync),否则高并发下仍然有丢失数据的风险。Snapshot是通常的做法,也是默认的方式,通过一定的策略来触发,注意是Snapshot是全量写入磁盘的。
 
redis也实现了事务性的两阶段提交,事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。事务中的命令要么全部被执行,要么全部都不执行。
 
值得一提的是,在电子商务网站中,前端负载均衡设备通常会以FAQ的方式询问后端服务是否活着,对于redis的检查,可以通过ping命令完成。

redis使用心得的更多相关文章

  1. 分布式缓存Redis使用心得

    一.缓存在系统中用来做什么 1. 少量数据存储,高速读写访问.通过数据全部in-momery 的方式来保证高速访问,同时提供数据落地的功能,实际这正是Redis最主要的适用场景. 2. 海量数据存储, ...

  2. python redis使用心得

    发布与订阅 连接池代码 redis_conn.py import redis REDIS_CONN = { 'HOST': '192.168.1.11', 'PORT': '6378', 'DB': ...

  3. redis学习心得之三-【java操作redis】

    今天主要是讲讲java对redis的操作,来段代码掩饰下基本操作即可明白. java调用你需要下载jedis.jar包 下载网址:https://github.com/xetorthio/jedis/ ...

  4. redis学习心得之二【redis主从配置】

    在前一节我们已经实践启动了一个redis服务,我们将其作为主机,现为其创建一个从机作备份使用 1.复制一份配置出来为从机所用 ~$ cp       redis/etc/redis.conf     ...

  5. redis学习心得之一【安装redis初体验】

    在linux下安装redis 说起这个比mysql的安装过程简单多乐,它不需要configure,只需要解压之后make就可以,无需make install ~$ wget http://redis. ...

  6. 工作圈redis 使用

    redis作为内存数据库,更多的是作为内存cache来使用. 再所负责的工作圈中的使用,主要是分两方面: 1.数据对象: 主题的内容存储 主题回复内容的存储 用户信息存储 圈子信息存储 2.各数据对象 ...

  7. redis安装与使用

    linux: 1.下载redis 下载redis: 可以在redis的官网下载 : http://redis.io/ 也可以去谷歌的code下载: http://code.google.com/p/r ...

  8. .Net Core 三大Redis客户端对比和使用心得

    前言 稍微复杂一点的互联网项目,技术选型都可能会涉及Redis,.NetCore的生态越发完善,支持.NetCore的Redis客户端越来越多, 下面三款常见的Redis客户端,相信大家平时或多或少用 ...

  9. java调用redis的多种方式与心得

    心得: /** * 心得: * 1.连接方式主要有:直连同步,直连事务,直连管道,直连管道事务,分布式直连同步,分布式直连管道, * 分布式连接池同步,分布式连接池管道:普通连接池同步,普通连接池管道 ...

随机推荐

  1. Linux(Ubuntu 14.0)

    开始了Mono的学习.学习了Mono for Android之后,编译一些小的APK,总发现这些APK文件很大,额,真心不知道为什么,那么,就让我们从头开始学期了,Android是基于Linux的,那 ...

  2. maven 三个基本插件 clean dependency compiler

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  3. js校验输入字符串的字节长度

    //检查输入字符串字节长度 function fucCheckLength(strTemp) { var i,sum; sum=0; var length = strTemp.length ; for ...

  4. 不同包中继承关系访问protected内部类问题

    有两个包pack1和pack2,pack1中是父类,pack2中子类继承自pack1中的父类.这里主要探索一下子类访问父类中protected内部类的问题: 第一个类: package pack1; ...

  5. jquery基础事件

    一.常用的事件有:click.dblclick. mousedown.mouseup.mousemove.mouseover.mouseout.change.select.submit.keydown ...

  6. 如何更改OS系统下截图生成图片格式 jpg pdf

    Mac系统下快速截屏的快捷键: 1.截全屏: shift + command + 3 2.选取截屏 shift + command + 4 生成的图片,系统默认格式忘了,反正不好用,用下面命令更改生成 ...

  7. 在Linux上安装最新版java的JDK

    之前写过一篇关于MC建服的文章(http://www.cnblogs.com/apollospotatolikett/p/6149042.html),文章中使用的JDK不是最新的版本,当时没有细说如何 ...

  8. noip2012-day2-t2

    [问题描述] 在大学期间,经常需要租借教室.大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室.教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样. 面对海量租借教室的信息,我们 ...

  9. LInux配置jdk(mac和windows)

    我的linux使用的是VMware搭建的虚拟环境,用的是CENTOS6.5 一.准备工作: 1.确定系统安装的是成功的. 2.系统没有其他的问题 3.确定没有安装过其他版本的jdk,两个jdk会反冲 ...

  10. shell中括号的使用

    在这里我想说的是几种shell里的小括号,大括号结构和有括号的变量,命令的用法,如下: 1.${var} 2.$(cmd) 3.()和{} 4.${var:-string},${var:+string ...