1 Redis简介
1.1 Redis是什么
REmote DIctionary Server(Redis) 是一个由Salvatore
Sanfilippo写的key-value存储系统。Redis提供了一些丰富的数据结构,包括lists, sets, ordered sets
以及 hashes ,当然还有和Memcached一样的 strings结构.Redis当然还包括了对这些数据结构的丰富操作。
Redis的优点
- 性能极高 – Redis能支持超过 100K+ 每秒的读写频率。
- 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
- 原子 – Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
- 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。
1.2 数据类型
- String类型
- List类型
- 集合(Sets)类型
- 有序集合(Sorted Sets)类型
- Hash类型
1.3 Publish/Subscribe
- 订阅信息管道
- 按一定模式批量订阅
1.4 数据过期设置
1.5 事务性
1.6 持久化
Redis的所有数据都存储在内存中,但是他也提供对这些数据的持久化。
数据快照 – 数据快照的原理是将整个Redis中存的所有数据遍历一遍存到一个扩展名为rdb的数据文件中
Append-Only File(追加式的操作日志记录) – Redis还支持一种追加式的操作日志记录,叫append only
file,其日志文件以aof结局,我们一般各为aof文件。要开启aof日志的记录,你需要在配置文件中进行设置:appendonly yes
1.7 管理命令
Redis支持多个DB,默认是16个,你可以设置将数据存在哪一个DB中,不同DB间的数据具有隔离性。也可以在多个DB间移动数据。
1.8 客户端
Redis的客户端很丰富,几乎所有流行的语言都有其客户端,可以上Redis的Clients页面去查找,地址:http://redis.io/clients
2 安装Redis服务端
官网下载源码:http://redis.io/download
wget http://redis.googlecode.com/files/redis-2.6.14.tar.gz tar xzf redis-2.6.14.tar.gz cd redis-2.6.14 make #redis的安装非常简单,已经有现成的Makefile文件,直接运行make命令即可
注:
编译redis 2.6 由于系统有点老,以至于编不过,报错undefined reference to__sync_add_and_fetch_4′
解决方法:http://www.linuxeye.com/configuration/1473.html
此时会在src目录下生成几个可执行文件:redis-benchmark,redis-check-aof,redis-check-
dump,redis-cli,redis-sentinel,redis-server。这几个文件,加上一个redis.conf就构成了整个
redis的最终可用包。
下面你可以把这几个可执行文件和redis.conf文件复制到你所希望的地方,比如我是复制到/usr/local/redis/bin 和/usr/local/redis/etc 下面的,命令如下:
mkdir -p /usr/local/redis/{bin,etc,var} /bin/cp src/{redis-benchmark,redis-check-aof,redis-check-dump,redis-cli,redis-sentinel,redis-server} /usr/local/redis/bin/ /bin/cp redis.conf /usr/local/redis/etc/ ln -s /usr/local/redis/bin/* /usr/local/bin/ sed -i 's@pidfile.*$@pidfile /var/run/redis.pid@' /usr/local/redis/etc/redis.conf sed -i 's@logfile.*$@logfile /usr/local/redis/var/redis.log@' /usr/local/redis/etc/redis.conf sed -i 's@^dir.*$@dir /usr/local/redis/var@' /usr/local/redis/etc/redis.conf sed -i 's@daemonize no@daemonize yes@' /usr/local/redis/etc/redis.conf echo 'vm.overcommit_memory = 1' >> /etc/sysctl.conf sysctl -p
注意,默认复制过去的redis.conf文件的daemonize参数为no,所以redis不会在后台运行,这时要测试,我们需要重新开一个终端。修改为yes则为后台运行redis。另外配置文件中规定了pid文件,log文件和数据文件的地址,如果有需要先修改,默认log信息定向到
stdout。
配置开机自启动redis-server
wget http://mirrors.linuxeye.com/oneinstack/init.d/Redis-server-init-CentOS mv Redis-server-init-CentOS /etc/init.d/redis-server chmod +x /etc/init.d/redis-server chkconfig --add redis-server chkconfig redis-server
启动redis:
service redis-server start
测试:
# /usr/local/redis/bin/redis-cli redis 127.0.0.1:6379> set name linuxeye OK redis 127.0.0.1:6379> get name "linuxeye"
关闭redis:
service redis-server stop
Thu Aug 22 21:09:48 CST 2013