对于分布式缓存,之前公司项目中只使用了MemCached,使用比较方便,有现成的C#版本组件。
如今用Redis的公司有很多,所以打算了解一下Redis。
Redis的官网地址:http://redis.io
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。
Redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。 Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便。 Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。存盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助。 搭环境: 公司资源限制问题,找了一台工作机器,安装了VMWare, 虚拟了一台Ubantu(乌班图)linux系统。 (1). 配置IP,修改文件/etc/network/interfaces,注意为了使虚拟机与主机的IP能够互ping,需要将虚拟机的IP与主机设置在同一个网段:>gedit /etc/network/interfaces
内容:
auto eth0
iface eth0 inet static
address 192.168.32.216
netmask 255.255.255.0
gateway 192.168.32.2
(2).修改文件 /etc/resolv.conf
>gedit /etc/resolv.conf
内容:
nameserver 192.168.32.2
(3)执行如下命令让配置生效
>sudo /etc/init.d/networking restart
通过执行ifconfig检查配置是否成功。
(4)安装Redis
从Redis 官网下载文件 redis-3.0.2.tar.gz,将该文件放入虚拟机目录/home/anny/tools/下。
执行如下命令:
tar zxvf redis-3.0.2.tar.gz
cd redis-3.0.2/src
make
将Redis需要的文件移动到 目录 /usr/local/redis中,命令如下:
mkdir -p /usr/local/redis/bin
mkdir -p /usr/local/redis/etc
mv /home/anny/redis-3.0.2/redis.conf /usr/local/redis/etc
cd /home/anny/redis-3.0.2/src
mv mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-dump redis-cli redis-server /usr/local/redis/bin
如果想让redis server在后台运行,可以修改redis的配置文件redis.conf,修改 “daemonize no” 改为“daemonize yes”。
./redis-server /usr/local/redis/etc/redis.conf 通过以下命令检查redis(Redis的默认端口是6379)是否在后台成功运行: ps -ef | grep redisnetstat -tunpl | grep 6379 运行redis 客户端程序: ./redis-cli 在centos下,关闭Redis Server,命令如下:
pkill redis-server 在Ubantu下,关闭Redis Server,命令如下:
先通过命令查看进程ps -e 2039 ? 00:00:27 redis-server 然后找到redis-server的进程ID,例2039 kill -2039 或者 kill -9 2039 这样就关闭了redis-server进程,通过命令netstat -tunpl | grep 6039,就看不到信息了,表明redis-server进程已经关闭。