redis学习研究--基础知识
以下内容多为摘抄转载;
1. Redis 是什么
Redis是一个开源的使用ANSI C语言编写的基于内存的key/value存储系统,与memcache类似,但它支持的value类型更多,包括:字符串(string)、链表(list)、集合(set)、有序集合(sorted set)和hash tablehttp://blog.nosqlfan.com/html/2235.html等,这些数据类型支持push/pop、add/remove、交集并集差集及其他更丰富的操作,且这些操作均是原子性的。
按照分布式领域的CAP理论,Consisency、Availability、Tolerance to network Partitions这三个部分在任何系统架构实现时,只能同时满足其中两点,没法三者兼顾。Redis是一个数据库,它将重点放在了Consisency和Availability上,因而Redis只是一个单机的key/value系统,并不直接支持分布式,同时考虑到Tolerance to network Partitions,它支持将数据同步到多台从库上。
2. Redis 有哪些优点
与memcache和MySQL等类似产品比较,Redis有以下几个优点:
(1) 非常丰富的数据结构,且这些数据结构的常见操作均是原子性的;
(2) 高速读写。Memcached提供了CAS命令,可以保证多个并发访问操作同一份数据的一致性问题。 Redis没有提供CAS命令,不过Redis提供了事务的功能,可以保证一串 命令的原子性,中间不会被任何操作打断。MYSQL使用了锁,而memcache未使用锁,进而效率极高。总之,Redis用自己实现的事件分离器,代码量很短,没有CAS,没有lock,因而效率非常高。
关于memcache与redis的比较,可参考这篇文章:《Redis与Memcached的比较》http://tech.it168.com/a2011/0818/1234/000001234403_1.shtml
3. Redis 有哪些缺点
Redis主要缺点有两个:
(1) 持久化。 Redis直接将数据存储到内存中,可通过两种方式持久化:定时快照(snapshot)和基于语句的追加(AppendOnlyFile,aof)。Snapshot的方法是指每隔一段时间将整个数据库的数据写到磁盘上,很明显,每次均是写全部数据,代价非常高;而aof方法只追踪变化的数据,这类似于mysql的binlog方法,但追加log可能过大,同时所有操作均要重新执行一遍,恢复速度慢。
(2) 耗内存。尽管Redis对一些数据结构采用了压缩算法存储,但占用内存量还是过高。
4. Redis 的应用场景
Redis的作者antirez曾笑称其为一个数据结构服务器(data structures server),的确,利用Redis灵活多变的数据结构和数据操作,我们可以很容易的实现各种功能,下面列举几个典型的操作:
(1) 计数器
Redis的命令均是原子性的,可以很容易使用INCR、DECR命令来构建计数器系统
(2) 获取最新的N个数据操作
可使用list何种的LPUSH和LTRIM操作。
(3) 排行榜应用,取TOP N操作
上面一个操作是按时间就行排序,而这个则是用于自定义的一个条件,比如点击次数等,这时候可使用sorted set这种数据结构。
更多应用场景,可参考一下几篇文章:
【1】《redis 点滴》:http://www.jeffkit.info/2011/05/994/
【2】 Redis中7种集合类型应用场景:http://blog.prosight.me/index.php/2011/08/802
【3】 Redis作者谈Redis应用场景:http://blog.nosqlfan.com/html/2235.html
5. Redis 使用体验
(1)选定某个数据库select
对于SQL类的数据库,我们可以创建n个数据库,且每个数据库都对应一个名字,我们通常会先选择一个数据库,再对数据库中的表操作,而Redis则不同,在Redis中,数据库被赋以一个整数编号(从0开始),默认情况下是对数据库0进行操作,数据库的数目可以在配置文件redis.conf中databases属性指定。
(2)数据库存储和检索
直接使用http://redis.io/commands上的命令完成数据存储和检索即可
(3)支持事务
MULTI, EXEC, DISCARD 和 WATCH 命令是Redis事务的基石。一个Redis事务允许一组Redis命令单步执行,并提供下面两个重要保证:一个事务中的所有命令串行执行;要么全部命令要么没有任何命令被处理。具体可参开这篇文章:http://blog.xiping.me/2010/12/transaction-in-redis.html
(4) Redis客户端
Redis支持非常各种语言的客户端,具体参:http://redis.io/clients
原创文章,转载请注明: 转载自董的博客
本文链接地址: http://dongxicheng.org/nosql/redis-code-basic-points/
作者:Dong,作者介绍:http://dongxicheng.org/about/
本博客的文章集合:http://dongxicheng.org/recommend/
redis学习研究--基础知识的更多相关文章
- Redis学习之一--基础知识
一.定义 REmote DIctionary Server(Redis) 是一个以字典结构存储数据的key-value存储系统:使用ANSI C语言编写.遵守BSD协议.支持网络.可基于内存亦可持久化 ...
- 关于图计算&图学习的基础知识概览:前置知识点学习(Paddle Graph Learning (PGL))
关于图计算&图学习的基础知识概览:前置知识点学习(Paddle Graph Learning (PGL)) 欢迎fork本项目原始链接:关于图计算&图学习的基础知识概览:前置知识点学习 ...
- jQuery学习笔记 - 基础知识扫盲入门篇
jQuery学习笔记 - 基础知识扫盲入门篇 2013-06-16 18:42 by 全新时代, 11 阅读, 0 评论, 收藏, 编辑 1.为什么要使用jQuery? 提供了强大的功能函数解决浏览器 ...
- Ant学习-001-ant 基础知识及windows环境配置
一.Ant 概要基础知识 Apache Ant 是一个将软件编译.测试.部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发,用以构建应用,或结合其他开源测试工具例如 git.T ...
- 学习javascript基础知识系列第二节 - this用法
通过一段代码学习javascript基础知识系列 第二节 - this用法 this是面向对象语言中的一个重要概念,在JAVA,C#等大型语言中,this固定指向运行时的当前对象.但是在javascr ...
- 学习javascript基础知识系列第三节 - ()()用法
总目录:通过一段代码学习javascript基础知识系列 注意: 为了便于执行和演示,建议使用chrome浏览器,按F12,然后按Esc(或手动选择)打开console,在console进行执行和演示 ...
- 学习Python3基础知识过程中总结
print()中end==""的用法 例子:用Python3输出九九乘法表: for i in range(1,10): for j in range(1,i+1): s=i*j ...
- three.js学习笔记--基础知识
基础知识 从去年开始就在计划中的three.js终于开始了 历史介绍 (摘自ijunfan1994的转载,感谢作者) OpenGL大概许多人都有所耳闻,它是最常用的跨平台图形库. WebGL是基于Op ...
- SQLServer学习笔记<>.基础知识,一些基本命令,单表查询(null top用法,with ties附加属性,over开窗函数),排名函数
Sqlserver基础知识 (1)创建数据库 创建数据库有两种方式,手动创建和编写sql脚本创建,在这里我采用脚本的方式创建一个名称为TSQLFundamentals2008的数据库.脚本如下: ...
随机推荐
- No1_7.类和对象_Java学习笔记
一.面向对象的特点:a.封装:封装是面向对象的核心思想,将对象的属性和行为封装起来的载体就是类,类通常对客户隐藏其实现细节,这就是封装的思想: 保证了类内部数据的完整性,应用该类的用户不能轻易直接操纵 ...
- SharpZipLib 压缩文档下载
using ICSharpCode.SharpZipLib.Zip; Response.Clear(); Response.ClearContent(); Response.ClearHeaders( ...
- 【JAVA编码专题】总结
第一部分:编码基础 为什么需要编码:用计算机看得懂的语言(二进制数)表示各种各样的字符. 一.基本概念 ASCII.Unicode.big5.GBK等为字符集,它们只定义了这个字符集内有哪些字符,以及 ...
- MAC Intellij IDEA 常用快捷键
MAC Intellij IDEA 常用快捷键 Copy by: http://blog.csdn.net/cym492224103/article/details/40077253 Keymap 设 ...
- win8(64位)下memcache安装时报错“ failed to install service or service already installed” 与安装
解决办法: 1.找到cmd.exe文件(c:\windows\system32\cmd.exe) 2.右键cmd.exe以管理员方式运行 3.把php_memcache.dll放到php的ext目录: ...
- linux系统结构和系统命令初步
以上是第五课和第14课笔记 linux 基本结构: 系统构成:kernel,Modules,Lib,(Shell,Tool)系统引导:BIOS -> Bootlooder -> Kerne ...
- 【好程序员笔记分享】——URL解码与编码
-iOS培训,iOS学习-------型技术博客.期待与您交流!------------ 1.url编码 ios中http请求遇到汉字的时候,需要转化成UTF-8,用到的方法是: NSString * ...
- secure_file_priv 配置项对数据导入导出的影响
secure_file_priv mysqld 用这个配置项来完成对数据导入导出的限制. 例如我们可以通过 select * from tempdb.t into outfile '/home/my ...
- Qt5.3企业版和开源版功能区别
一: Charts Charts是QT提供的图表模块.他提供了非常简便的APIs来绘制令人惊叹的Line, Spline,Area,Scatter,Pie,Donut,Bar,Polar和Box-an ...
- ASP.NET MVC3 系列教程 – 新的Layout布局系统
原文地址:http://www.cnblogs.com/highend/archive/2011/04/18/asp_net_mvc3_layout.html I:回忆MVC2当中MasterPage ...