发布网友 发布时间:2022-04-23 12:43
共2个回答
懂视网 时间:2022-05-01 03:58
2.下载安装包
wget http://download.redis.io/releases/redis-3.0.7.tar.gz
3.解压
tar -zxvf redis-3.0.7.tar.gz
解压后进入redis-3.0.7文件夹内
4.安装
Redis文件夹自带makefile文件,直接在redis-3.0.7文件夹中输入make命令即可。
5.运行redis
cd src执行./redis-server命令运行redis,Redis 服务端的默认连接端口是 6379。
6.将Redis作为 Linux 服务开机启动
/root/software/redis-3.0.7/src/redis-server
7.客户端连接验证
进入/root/software/redis-3.0.7/src文件夹中,执行./redis.cli命令即启用redis客户端连接redis服务器。
8.操作redis数据库
9.配置Redis.conf
daemonize yes #指定Redis以守护进程的方式运行。
pidfile /var/run/redis.pid #当Redis以守护进程方式运行时,把pid写入指定的文件。
port 6379 #指定监听端口,默认端口为6379。
bind 192.168.0.35 #绑定的主机IP地址。
logfile /var/log/redis/redis.log #指定日志的记录方式,默认为标准输出。
databases 16 #设置数据库的数量。
Save #Redis默认配置文件中提供了三个条件:
save 900 1
save 300 10
save 60 10000 #分别表示900秒(15分钟)内有1个更改,300秒(5分钟)内有10个更改以及60秒内有10000个更改的时候,同步数据到磁盘文件。
rdbcompression yes #指定存储至本地数据库时是否压缩数据,默认为yes。
dbfilename dump.rdb #指定本地数据库文件名。
dir /home/banping/redis/data #指定本地数据库存放目录。
requirepass password #设置Redis连接密码,默认关闭。
maxclients 128 #设置最大客户端连接数,默认无。
maxmemory #指定Redis能使用的最大内存。
(注:警告问题及解决办法
警告:WARNING overcommit_memory is set to 0! Background save may fail under low memory condition....
解决办法:在/etc/sysctl.conf配置文件中添加vm.overcommit_memory = 1,然后sysctl -p重启一下服务。
警告:WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
解决办法:在/etc/sysctl.conf配置文件中添加net.core.somaxconn = 1024 然后sysctl -p重启一下服务。
警告:WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis....
解决办法:以root身份执行echo never > /sys/kernel/mm/transparent_hugepage/enabled命令,然后将此命令加入到/etc/rc.local中。
)
正确日志输出:
二、安装Redis的python包
1.redis的python包下载
我的python是python2.6,执行下载命令为wget https://github.com/andymccurdy/redis-py/archive/master.zip 即可下载。
2.解压安装
unzip master.zip
cd redis-py-master
sudo python2.6 setup.py install
路径/usr/lib/python2.6/sitepackage文件夹下的setuptools-20.2.2-py2.6.egg 就是我们想要的。
3.测试python可不可以操作数据库
import redis
r = redis.StrictRedis(host=‘localhost‘, port=6379, db=0)
r.set(‘test‘, ‘test123‘)
r.get(‘test‘)
r.delete(‘test‘)
r.config_get("maxmemory")
如上图所示,可以使用python操作数据库了。
三、Python对redis访问的基本API封装
#!/usr/bin/python #coding=utf-8 import redis class CRedis: def __init__(self): self.host = 'localhost' self.port = 6379 self.db = 0 self.r = redis.Redis(host = self.host, port = self.port, db = self.db) #1. strings 类型及操作 #设置 key 对应的值为 string 类型的 value def set(self, key, value): return self.r.set(key, value) def get(self, key): return self.r.get(key) #设置 key 对应的值为 string 类型的 value。如果 key 已经存在,返回 0,nx 是 not exist 的意思 def setnx(self, key, value): return self.r.setnx(key, value) #设置 key 对应的值为 string 类型的 value,并指定此键值对应的有效期 def setex(self, key, time, value): return self.r.setex(key, time, value) #设置指定 key 的 value 值的子字符串 #例:setrange name 8 gmail.com #其中的 8 是指从下标为 8(包含 8)的字符开始替换 def setrange(self, key, num, value): return self.r.setrange(key, num, value) #获取指定 key 的 value 值的子字符串 def getrange(self, key, start ,end): return self.r.getrange(key, start, end) #删除 def remove(self, key): return self.r.delete(key) #自增 def incr(self, key, default = 1): if (1 == default): return self.r.incr(key) else: return self.r.incr(key, default) #自减 def decr(self, key, default = 1): if (1 == default): return self.r.decr(key) else: return self.r.decr(key, default) #清空当前db def clear(self): return self.r.flushdb() if __name__ == '__main__': r = CRedis() r.set(name, allesa) r.get(name) r.remove(name)
四、Redis的两种备份方式
1.RDB
默认情况下60秒刷新到disk一次[save 60 10000 当有1w条keys数据被改变时],Redis的数据集保存在叫dump.rdb一个二进制文件,这种策略被称为快照。
可以手动调用Save或BGSAVE命令的:/root/software/redis-3.0.7/src/redis-cli -h 127.0.0.1 -p 6379 -a pwd bgsave
2.AOF
快照易恢复,文件也小,但是如果遇到宕机等情况的时候快照的数据可能会不完整。此时可能需要启用另一种持久化方式AOF,在配置文件中打开[appendonly yes]。
AOF刷新日志到disk的规则:
appendfsync always #always 表示每次有写操作都进行同步,非常慢,非常安全。
appendfsync everysec #everysec表示对写操作进行累积,每秒同步一次。
官方的建议的everysec,安全,就是速度不够快,如果是机器出现问题可能会丢失1秒的数据。
也可以手动执行bgrewriteaof进行AOF备份:
/usr/local/bin/redis-cli -h 127.0.0.1 -p 6379 -a pwd bgrewriteaof
我们现在的做法是一主(Master)多从(Slave),主库不开启AOF持久化,只是每天备份一下RDB[官方给的建议是每小时备份RDB文件,看你的策略了],而在从库上开启AOF备份,并且会用脚本将相应的备份文件推送到备份服务器。
当redis服务器挂掉时,重启时将按照以下优先级恢复数据到内存:
如果只配置AOF,重启时加载AOF文件恢复数据;
如果同时配置了RBD和AOF,启动时只加载AOF文件恢复数据;
如果只配置RBD,启动时将加载dump文件恢复数据。
恢复时需要注意,要是主库挂了不能直接重启主库,否则会直接覆盖掉从库的AOF文件,一定要确保要恢复的文件都正确才能启动,否则会冲掉原来的文件。
Redis数据库安装部署
标签:
热心网友 时间:2022-05-01 01:06
接下来我们来安装Redis
1、先到Redis官网(redis.io)下载redis安装包
2、将其下载到我的/lamp目录下
3、解压并进入其目录
4、编译源程序
make
cd src
make install PREFIX=/usr/local/redis
5、将配置文件移动到redis目录
6、启动redis服务
7、默认情况,Redis不是在后台运行,我们需要把redis放在后台运行
vim /usr/local/redis/etc/redis.conf
将daemonize的值改为yes
8、客户端连接
/usr/local/redis/bin/redis-cli
9、停止redis实例
/usr/local/redis/bin/redis-cli shutdown
或者
pkill redis-server
10、让redis开机自启
vim /etc/rc.local
加入
/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis-conf
11、接下来我们看看/usr/local/redis/bin目录下的几个文件时什么
redis-benchmark:redis性能测试工具
redis-check-aof:检查aof日志的工具
redis-check-mp:检查rdb日志的工具
redis-cli:连接用的客户端
redis-server:redis服务进程
Redis的配置
daemonize:如需要在后台运行,把该项的值改为yes
pdifile:把pid文件放在/var/run/redis.pid,可以配置到其他地址
bind:指定redis只接收来自该IP的请求,如果不设置,那么将处理所有请求,在生产环节中最好设置该项
port:监听端口,默认为6379
timeout:设置客户端连接时的超时时间,单位为秒
loglevel:等级分为4级,debug,revbose,notice和warning。生产环境下一般开启notice
logfile:配置log文件地址,默认使用标准输出,即打印在命令行终端的端口上
database:设置数据库的个数,默认使用的数据库是0
save:设置redis进行数据库镜像的频率
rdbcompression:在进行镜像备份时,是否进行压缩
dbfilename:镜像备份文件的文件名
dir:数据库镜像备份的文件放置的路径
slaveof:设置该数据库为其他数据库的从数据库
masterauth:当主数据库连接需要密码验证时,在这里设定
requirepass:设置客户端连接后进行任何其他指定前需要使用的密码
maxclients:*同时连接的客户端数量
maxmemory:设置redis能够使用的最大内存
appendonly:开启appendonly模式后,redis会把每一次所接收到的写操作都追加到appendonly.aof文件中,当redis重新启动时,会从该文件恢复出之前的状态
appendfsync:设置appendonly.aof文件进行同步的频率
vm_enabled:是否开启虚拟内存支持
vm_swap_file:设置虚拟内存的交换文件的路径
vm_max_momery:设置开启虚拟内存后,redis将使用的最大物理内存的大小,默认为0
vm_page_size:设置虚拟内存页的大小
vm_pages:设置交换文件的总的page数量
vm_max_thrrads:设置vm IO同时使用的线程数量