首页 > 代码库 > redis 的理解

redis 的理解

1.Redis使用 C语言开发的。Redis 约定此版本号,为偶数的版本是稳定版(如:2.4版 2.6版),奇数版是非稳定版(如:2.5版 2.7版)
2.Redis 数据库中的所有的数据都存储在内存中,由于内存的速度远远快于硬盘,因此Redis在性能上对比其他基于硬盘存储的数据库有明显优势,在普通一台计算机上,Redis 可以在一秒内读写超过十万个键值。
3.Redis 可以为每个键设置生存时间,生存时间到期后键会自动被删除。 在性能上 Redis是单线程模型, Memcachced 支持多线程,所以在多核服务器上后者的性能更高一些。
4.字符串类型是Redis 中最基本的数据类型,它能存储任何形式的字符串,包括二进制数据。你可以存储用户的邮箱、JSON化的对象甚至是一张图片,一个字符串类型键可以存储的 数据最大容量是512MB。在关系数据库中我们通过设置字段属性为AUTO_INCREMENT 来实现每增加一条记录生成唯一一个递增ID。 Redis 中通过另外一种形式实现: 对于每一个类对象使用名为对象类型:count键(如:user:count) 来存储当前类型对象的数量,每增加一个对象时使用INCR命令递增该键的值,由于默认的初始键值是1。

5.下面是redis.conf的主要配置参数的意义:
daemonize:是否以后台daemon方式运行
pidfile:pid文件位置
port:监听的端口号
timeout:请求超时时间
loglevel:log信息级别
logfile:log文件位置
databases:开启数据库的数量
save * *:保存快照的频率,第一个*表示多长时间,第三个*表示执行多少次写操作。在一定时间内执行一定数量的写操作时,自动保存快照。可设置多个条件。
rdbcompression:是否使用压缩
dbfilename:数据快照文件名(只是文件名,不包括目录)
dir:数据快照的保存目录(这个是目录)
appendonly:是否开启appendonlylog,开启的话每次写操作会记一条log,这会提高数据抗风险能力,但影响效率。
appendfsync:appendonlylog如何同步到磁盘(三个选项,分别是每次写都强制调用fsync、每秒启用一次fsync、不调用fsync等待系统自己同步)

6.redis数据结构

redis 的作者antirez曾称其为一个数据结构服务器(data structures server),这是一个非常准确的表述,redis的所有功能就是将数据以其固有的几种结构保存,并提供给用户操作这几种结构的接口。我们可以想象我们在各种语言中的那些固有数据类型及其操作。

redis目前提供四种数据类型:string,list,set及zset(sorted set)和Hash。

string是最简单的类型,你可以理解成与Memcached一模一个的类型,一个key对应一个value,其上支持的操作与Memcached的操作类似。但它的功能更丰富。
list是一个链表结构,主要功能是push、pop、获取一个范围的所有值等等。操作中key理解为链表的名字。
set是集合,和我们数学中的集合概念相似,对集合的操作有添加删除元素,有对多个集合求交并差等操作。操作中key理解为集合的名字。
zset是set的一个升级版本,他在set的基础上增加了一个顺序属性,这一属性在添加修改元素的时候可以指定,每次指定后,zset会自动重新按新的值调整顺序。可以理解了有两列的mysql表,一列存value,一列存顺序。操作中key理解为zset的名字。
Hash数据类型允许用户用Redis存储对象类型,Hash数据类型的一个重要优点是,当你存储的数据对象只有很少几个key值时,数据存储的内存消耗会很小.更多关于Hash数据类型的说明请见: http://code.google.com/p/redis/wiki/Hashes
在官网上给出了所有支持的接口列表,并副副附有详细的介绍,地址:

http://code.google.com/p/redis/wiki/CommandReference

另外,作者还提供了一个非常贴心的web命令行模拟页面,供初学者试用redis,地址:

http://try.redis-db.com/

 7. redis 时间单位为秒

redis 的理解