原创文章转载请注明出处:@协思, 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. aa4

    // 初始化地图 var BMapExt = new BMapExtension(domMain, BMap, require('echarts'), require('zrender')); var ...

  2. 利用(Tcmalloc) google-perftools优化Nginx和MySQL性能

    一.安装libunwind wget http://download.savannah.gnu.org/releases/libunwind/libunwind-1.1.tar.gz 本地下载:htt ...

  3. JAVA编程心得-Eclipse/MyEclipse 中文乱码解决办法

    将别人的项目或JAVA文件导入到自己的Eclipse中时,常常会出现JAVA文件的中文注释变成乱码的情况,主要原因就是别人的IDE编码格式和自己的Eclipse编码格式不同.总结网上的建议和自己的体会 ...

  4. easyui tree onloadsuccess事件的心得

    在onloadSuccess事件中不能apeed新节点,否则又会触发noloadsuccess事件,形成死循环. 公司电话:028-87657875           13060063607 淘宝店 ...

  5. JS获得URL超链接的参数值

    /** * 获取指定URL的参数值 * @param url  指定的URL地址 * @param name 参数名称 * @return 参数值 */ function getUrlParam(ur ...

  6. 【转】怎样查出SQLServer的性能瓶颈

    怎样查出SQLServer的性能瓶颈 --王成辉翻译整理,转贴请注明出自微软BI开拓者[url]www.windbi.com[/url]--原帖地址 如果你曾经做了很长时间的DBA,那么你会了解到SQ ...

  7. jQuery-强大的jQuery选择器 (详解)[转]

      1. 基础选择器 Basics 名称 说明 举例 #id 根据元素Id选择 $("divId") 选择ID为divId的元素 element 根据元素的名称选择, $(&quo ...

  8. [转]LibreOffice-SDK 开发实战:嵌入MFC-View 和 C# Winform

    转自:http://www.aqcoder.com/blog/detail/id/1579bb39-9bcd-4c0f-9b02-67a851148196/ 前面片文章中我简要介绍了下 LibreOf ...

  9. Cauchy 级数浓缩判别法

  10. CentOS 访问Windows7共享文件夹

    在终端中输入命令mount -t cifs -o username="xxx",password="****" //192.168.1.1/share_fold ...