HTML5技术

【最全 干货 实例】 缓存手册(Memcached、redis、RabbitMQ) - 索宁(5)

字号+ 作者:H5之家 来源:H5之家 2016-09-01 12:00 我要评论( )

# 1、修改从库redis.conf配置文件 # 配置从库redis.conf配置文件(先装redis) # 添加一行,主库IP地址及端口 vim /application/redis/conf/ redis.conf # slaveof masterip masterport slaveof 192.168.200.95 6379

# 1、修改从库redis.conf配置文件 #配置从库redis.conf配置文件(先装redis) #添加一行,主库IP地址及端口 vim /application/redis/conf/redis.conf # slaveof <masterip> <masterport> slaveof 192.168.200.95 6379 # 2、重启从库redis服务 pkill redis redis-server /application/redis/conf/redis.conf & #启动提示 7815:S 23 Nov 19:48:52.059 # Server started, Redis version 3.0.5 7815:S 23 Nov 19:48:52.060 * The server is now ready to accept connections on port 6379 7815:S 23 Nov 19:48:53.060 * Connecting to MASTER 192.168.200.95:6379 -->跟主库建立连接 7815:S 23 Nov 19:48:53.060 * MASTER <-> SLAVE sync started -->主从同步已经开始 7815:S 23 Nov 19:48:53.062 * Non blocking connect for SYNC fired the event. 7815:S 23 Nov 19:48:53.074 * Master replied to PING, replication can continue... -->主从ping可以继续 7815:S 23 Nov 19:48:53.075 * Partial resynchronization not possible (no cached master) 7815:S 23 Nov 19:48:53.087 * Full resync from master: 24b26f7abc62830a7ff97516c960ba7fc0992da9:1 7815:S 23 Nov 19:48:53.122 * MASTER <-> SLAVE sync: receiving 32 bytes from master -->接收到字节数 7815:S 23 Nov 19:48:53.122 * MASTER <-> SLAVE sync: Flushing old data 7815:S 23 Nov 19:48:53.122 * MASTER <-> SLAVE sync: Loading DB in memory 7815:S 23 Nov 19:48:53.122 * MASTER <-> SLAVE sync: Finished with success -->成功 # 3、测试主从同步 # 主库:写数据 [root@localhost redis]# redis-cli 127.0.0.1:6379> set test1 oldsuo OK # 从库: [root@localhost conf]# redis-cli -h localhost -p 6379 monitor -->开启实时监控 OK 1448280033.096372 [0 192.168.200.95:6379] 1448280043.125830 [0 192.168.200.95:6379] 1448280053.154134 [0 192.168.200.95:6379] 1448280070.858808 [0 192.168.200.95:6379] 1448280070.858828 [0 192.168.200.95:6379] -->主库添加数据,从库同步 [root@localhost redis]-->从库同步成功

redis 主从同步

至于 redis 的负载均衡,方案有很多: LVS、keepalived、Twemproxy 小编有时间再补上吧...

reidis 负载均衡

 

 

2、Python 操作 Redis

python 安装 redis 模块:

$ sudo pip install redis or $ sudo easy_install redis or $ sudo python setup.py install 详见:https://github.com/WoLpH/redis-py https://pypi.python.org/pypi/redis https://redislabs.com/python-redis

 

API 的使用 1> 操作模式

redis-py 提供两个类 Redis 和 StrictRedis 用于实现 Redis 的操作命令,StrictRedis 用于实现大部分官方的命令,并使用官方的语法和命令,Redis 是 StrictRedis 的子类,用于向后兼容旧版本的 redis-py

import redis r = redis.Redis(host=, port=6379) r.set(, ) )

2> 连接池

redis-py 使用 connection pool 来管理对一个 redis server 的所有连接,避免每次建立、释放连接带来的额外开销。默认每个 Redis 实例都会维护着一个自己的连接池。也可以覆盖直接建立一个连接池,然后作为参数 Redis,这样就可以实现多个 Redis 实例共享一个连接池资源。实现客户端分片或有连接如何管理更细的颗粒控制。

pool = redis.ConnectionPool(host=, port=6379) r = redis.Redis(connection_pool=pool) r.set(, ) )

3> 操作

分为五种数据类型,见下图:

① String 操作,String 在内存中格式是一个 name 对应一个 value 来存储

set(name, value, ex=None, px=None, nx=False, xx=False)

# 在Redis中设置值,默认,不存在则创建,存在则修改 # 参数: ex,过期时间(秒) px,过期时间(毫秒) nx,如果设置为True,则只有name不存在时,当前set操作才执行 xx,如果设置为True,则只有name存在时,岗前set操作才执行

setnx(name, value)

# 设置值,只有name不存在时,执行设置操作(添加)

setex(name, value, time)

# 设置值 # 参数: time,过期时间(数字秒 或 timedelta对象)

psetex(name, time_ms, value)

# 设置值 # 参数: time_ms,过期时间(数字毫秒 或 timedelta对象)

mset(*args, **kwargs)

# 批量设置值 # 如: mset(k1=, k2=) 或 mget({: , : })

get(name)

# 获取值

mget(keys, *args)

# 批量获取 # 如: mget(, ) 或 r.mget([, ])

getset(name, value)

# 设置新值并获取原来的值

getrange(key, start, end)

name,Redis 的 name start,起始位置(字节) end,结束位置(字节) # 如: "索宁" ,0-3表示 "索"

setrange(name, offset, value)

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 快来一起打飞机、大牛带你用最2代码、写出外挂版微信打飞机 - 索宁

    快来一起打飞机、大牛带你用最2代码、写出外挂版微信打飞机 - 索宁

    2016-08-04 12:00

网友点评