Redis 是完全开源免费的,是一个高性能的key-value数据库。 Redis与其他key-value缓存缓存产品有以下三个特点:
redis下载
进入Redis安装包目录,启动临时服务
redis-server.exe redis.window.conf
# 服务端调用
redis-cli.exe -h -p
# 客户端调用
redis-server.exe --service-install redis.windows.conf --loglevel verbose
# 此时window服务中将注册Redis服务
redis-server.exe --service-start
# 启动服务
redis-cli.exe -h 127.0.0.1 -p 6379
# 客户端调用
redis-server.exe --service-stop
# 停止服务
redis-server.exe --service-uninstall
# 卸载服务
redis-server.exe --service-install redis.windows.conf --service-name RedisServer1 --loglevel verbose
# 在window服务中注册Redis服务
redis-server.exe --service-start --service-name RedisServer1
# 启动服务
redis-cli.exe -h 127.0.0.1 -p 6379
# 客户端调用
redis-server.exe --service-stop --Service-name RedisServer1
# 停止服务
redis-server.exe --service-uninstall --Service-name RedisServer1
# 卸载服务
为了分担读写压力,Redis支持主从复制,Redis的主从结构可以采用一主多从或者级联结构,Redis主从复制可以根据是否是全量分为全量同步和增量同步
步骤:
port 6379
port 6380
slaveof 127.0.0.1 6379
redis-cli.exe -h 127.0.0.1 -p 6379
redis-cli.exe -h 127.0.0.1 -p 6380
Redis集群是一个可以在多个Redis节点之间进行数据共享的设施
Redis集群不支持那些需要同时处理多个键的Redis命令,因为执行这些命令需要在多个Redis节点之间移动数据,并且在高负载的情况下,这些命令将降低Redis集群的性能,并导致不可预测的行为。
Redis集群通过服务来提供一定程度的可用性:即使集群中有一部分节点失效或者无法进行通讯,集群也可以继续处理命令请求。
Redis集群提供了以下两个好处:
Redis集群键分布算法使用数据分片,而非一致性哈希来实现:一个Redis集群包含16384个哈希槽,他们的编号为0~16383,这个槽时一个逻辑意义上的槽,实际上并不存在,redis中的每个key都属于这1638个哈希槽的其中一个, 存取key时都要进行key->slot的映射计算。 Redis集群有16384个哈希槽,每个key通过CRC16校验后对16384取模来决定放置哪个槽,集群的每个节点负责一部分hash槽,举个例子,比如当前集群有3个节点,那么 : 节点A包含0到5500号哈希槽 节点B包含5501到11000号哈希槽 节点C包含11001到16384号哈希槽 这种结构很容易添加或者删除节点
sudo apt-get install redis-server
# 下载
service redis status
# 开启redis服务
redis-cli
# 打开redis客户端
./src/redis-cli info | grep 'redis_version'
# 本地查看版本
./src/redis-cli -h 远程主机的IP info | grep 'redis_version'
# 远程查看版本
卸载软件
apt-get remove redis
清除配置
apt-get remove --purge redis
删除残留文件
find / -name redis
rm -rf var/lib/redis/
创建集群目录
cd /home/horns/桌面/redis集群/
mkdir -p 7000 7001 7002 7003 7004 7005 7006
将/etc/redis/redis.conf/ 分别复制到所有的文件夹中,并且修改以下设置
port 7000(每个节点的端口号)
daemonize yes(后台运行)
bind 192.168.1.110(绑定当前机器 IP)
dir /home/redis-cluster/7000/data/(数据文件存放位置)
pidfile /var/run/redis_7000.pid(pid 7000和port要对应)
cluster-enabled yes(启动集群模式)
cluster-config-file nodes-7000.conf(7000和port要对应)
cluster-node-timeout 15000
appendonly yes
启动节点
redis-server /home/horns/redis集群/7000/redis.conf
...
ps -aux | grep redis
# 查看进程
安装集群所需软件
sudo apt-get install ruby
gem install redis
启动集群
ruby redis-trib.rb create --replicas 1 ip:port ip:port ip:port ....
redis-trib.rb文件在 /usr/share/doc/redis-tools/examples 中
–replicas 1 表示主从复制比例为 1:1,即一个主节点对应一个从节点;然后,默认给我们分配好了每个主节点和对应从节点服务,以及 solt 的大小,因为在 Redis 集群中有且仅有 16383 个 solt ,默认情况会给我们平均分配,当然你可以指定,后续的增减节点也可以重新分配。 我们现在有六个节点,三个主节点三个从节点,默认最少需要六个节点才能组成集群。
与单击配置相比较,需要修改的
安装包
pip install redis-py-cluster
from rediscluster import StrictRedisCluster
startup_nodes = [
{"host":"192.168.1.110", "port":7000},
{"host":"192.168.1.110", "port":7001},
{"host":"192.168.1.110", "port":7002},
{"host":"192.168.1.110", "port":7003},
{"host":"192.168.1.110", "port":7004},
{"host":"192.168.1.110", "port":7005}
]
rc = StrictRedisCluster(startup_nodes=startup_nodes, decode_responses=True)
rc.set('name','admin')
rc.set('age',18)
print "name is: ", rc.get('name')
print "age is: ", rc.get('age')