标签:负载 ruby开发 log tools 访问量 验证 下载 表达式 装包
pip install redis
from redis import *
这个模块中提供了StrictRedis对象(Strict严格),?于连接redis服务器,并按照不同类型提供 了不同?法,进?交互操作.
通过init创建对象,指定参数host、port与指定的服务器和端口连接,host默认为localhost,port默认为6379.db默认为0.
conn = StrictRedis(host="localhost",port=6379,db=0) #可以简写成 conn = StrictRedis()
根据不同的类型,拥有不同的实例?法可以调?,与前?学的redis命令对应,?法需要的参数与命令的参数?致
学习目标
在桌面上创建redis目录
使用pycharm打开redis目录
创建redis_string.py文件
from redis import * if __name__=="__main__": try: #创建Strict对象,与redis服务器建立连接 conn = StrictRedis() except Exception as e: print(e)
方法set,添加键、值,如果添加成功则返回True,如果添加失败则返回False。
from redis import * if __name__=="main": try: conn = StrictRedis() #添加键name,值为itheima result = conn.set("name","itheima") #成功打印是True,失败False print(result) except Exception as e: print(e)
?法get,添加键对应的值,如果键存在则返回对应的值,如果键不存在则返回None
from redis import * if __name__=="__main__": try: #创建StrictRedis对象,与redis服务器建?连接 conn=StrictRedis() #获取键name的值 result = conn.get(‘name‘) #输出键的值,如果键不存在则返回None print(result) except Exception as e: print(e)
?法set,如果键已经存在则进?修改,如果键不存在则进?添加
from redis import * if __name__=="__main__": try: #创建StrictRedis对象,与redis服务器建?连接 conn=StrictRedis() #设置键name的值,如果键已经存在则进?修改,如果键不存在则进?添加 result = conn.set(‘name‘,‘itcast‘) #输出响应结果,如果操作成功则返回True,否则返回False print(result) except Exception as e: print(e)
?法delete,删除键及对应的值,如果删除成功则返回受影响的键数,否则则返回0
from redis import * if __name__=="__main__": try: #创建StrictRedis对象,与redis服务器建?连接 conn=StrictRedis() #设置键name的值,如果键已经存在则进?修改,如果键不存在则进?添加 result = conn.delete(‘name‘) #输出响应结果,如果删除成功则返回受影响的键数,否则则返回0 print(result) except Exception as e: print(e)
?法keys,根据正则表达式获取键
from redis import * if __name__=="__main__": try: #创建StrictRedis对象,与redis服务器建?连接 conn=StrictRedis() #获取所有的键 result=conn.keys() #输出响应结果,所有的键构成?个列表,如果没有键则返回空列表 print(result) except Exception as e: print(e)
通过主从配置可以实现读写分离
master和slave都是一个redis实例(redis服务)
配置主:
ifconfig
修改etc/redis/redis.conf文件
sudo vi redis.conf
bind 192.168.26.128
重启redis服务
sudo service redis stop
redis-server redis.conf
复制etc/redis/redis.conf文件
sudo cp redis.conf ./slave.conf
修改redis/slave.config文件
sudo vi slave.conf
编辑内容
bind 192.168.26.128 slaveof 192.168.26.128 6379 port 6378
redis服务
sudo redis-server slave.conf
查看主从关系
redis-cli -h 192.168.26.128 info Replication
在master和slave分别执?info命令,查看输出信息 进入主客户端
redis-cli -h 192.168.26.128 -p 6379
进入从的客户端
redis-cli -h 192.168.26.128 -p 6378
在master上写数据
set aa aa
在slave上读数据
get aa
集群是一组相互独立的、通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理。一个客户与集群相互作用时,集群像是一个独立的服务器。集群配置是用于提高可用性和可缩放性。
当请求到来首先由负载均衡服务器处理,把请求转发到另外的一台服务器上。
硬件层面:存在多台实体的电脑,每台电脑上都启动了一个redis或者多个redis服务。
当前拥有两台主机172.16.179.130、172.16.179.131,这?的IP在使?时要改为实际值
在conf?录下创建?件7000.conf,编辑内容如下
port 7000 bind 172.16.179.130 daemonize yes pidfile 7000.pid cluster-enabled yes cluster-config-file 7000_node.conf cluster-node-timeout 15000 appendonly yes
在conf?录下创建?件7001.conf,编辑内容如下
port 7001 bind 172.16.179.130 daemonize yes pidfile 7001.pid cluster-enabled yes cluster-config-file 7001_node.conf cluster-node-timeout 15000 appendonly yes
在conf?录下创建?件7002.conf,编辑内容如下
port 7002 bind 172.16.179.130 daemonize yes pidfile 7002.pid cluster-enabled yes cluster-config-file 7002_node.conf cluster-node-timeout 15000 appendonly yes
总结:三个?件的配置区别在port、pidfile、cluster-config-file三项
使?配置?件启动redis服务
redis-server 7000.conf redis-server 7001.conf redis-server 7002.conf
查看进程如下图:
在conf?录下创建?件7003.conf,编辑内容如下
port 7003 bind 172.16.179.131 daemonize yes pidfile 7003.pid cluster-enabled yes cluster-config-file 7003_node.conf cluster-node-timeout 15000 appendonly yes
在conf?录下创建?件7004.conf,编辑内容如下
port 7004 bind 172.16.179.131 daemonize yes pidfile 7004.pid cluster-enabled yes cluster-config-file 7004_node.conf cluster-node-timeout 15000 appendonly yes
在conf?录下创建?件7005.conf,编辑内容如下
port 7005 bind 172.16.179.131 daemonize yes pidfile 7005.pid cluster-enabled yes cluster-config-file 7005_node.conf cluster-node-timeout 15000 appendonly yes
总结:三个?件的配置区别在port、pidfile、cluster-config-file三项
使?配置?件启动redis服务
redis-server 7003.conf redis-server 7004.conf redis-server 7005.conf
查看进程如下图
将命令复制,这样可以在任何?录下调?此命令
sudo cp /usr/share/doc/redis-tools/examples/redis-trib.rb /usr/local/bin/
安装ruby环境,因为redis-trib.rb是?ruby开发的
sudo apt-get install ruby
在提示信息处输?y,然后回?继续安装
运?如下命令创建集群
redis-trib.rb create --replicas 1 172.16.179.130:7000 172.16.179.130:7001 172.16.179.130:7002 172.16.179.131:7003 172.16.179.131:7004 172.16.179.131:7005
执?上?这个指令在某些机器上可能会报错,主要原因是由于安装的 ruby 不是最 新版本!
天朝的防?墙导致?法下载最新版本,所以需要设置 gem 的源
解决办法如下
-- 先查看??的 gem 源是什么地址 gem source -l -- 如果是https://rubygems.org/ 就需要更换 -- 更换指令为 gem sources --add https://gems.ruby-china.org/ --remove https://rubygems.org/ -- 通过 gem 安装 redis 的相关依赖 sudo gem install redis -- 然后重新执?指令
redis-trib.rb create --replicas 1 172.16.179.130:7000 172.16.179.130:7001 172.16.179.130:7002 172.16.179.131:7003 172.16.179.131:7004 172.16.179.131:7005
提示如下主从信息,输?yes后回?
提示完成,集群搭建成功
在172.16.179.131机器上连接7002,加参数-c表示连接到集群
redis-cli -h 172.16.179.131 -c -p 7002
写入数据
set name itheima
?动跳到了7003服务器,并写?数据成功
在7003可以获取数据,如果写入数据又重定向到7000(负载均衡)
安装包如下:
pip install redis-py-cluster
redis-py-cluster源码地址https://github.com/Grokzen/redis-py-cluster,创建?件redis_cluster.py,示例码如下:
from rediscluster import * if __name__ == ‘__main__‘: try: # 构建所有的节点,Redis会使?CRC16算法,将键和值写到某个节点上 startup_nodes = [ {‘host‘: ‘192.168.26.128‘, ‘port‘: ‘7000‘}, {‘host‘: ‘192.168.26.130‘, ‘port‘: ‘7003‘}, {‘host‘: ‘192.168.26.128‘, ‘port‘: ‘7001‘}, ] # 构建StrictRedisCluster对象 src=StrictRedisCluster(startup_nodes=startup_nodes,decode_responses=True) # 设置键为name、值为itheima的数据 result=src.set(‘name‘,‘itheima‘) print(result) # 获取键为name name = src.get(‘name‘) print(name) except Exception as e: print(e)
标签:负载 ruby开发 log tools 访问量 验证 下载 表达式 装包
原文地址:https://www.cnblogs.com/lishuntao/p/11704662.html