当前位置:Gxlcms > 数据库问题 > Redis数据库安装部署

Redis数据库安装部署

时间:2021-07-01 10:21:17 帮助过:3人阅读

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中。

)

 技术分享

正确日志输出:

 技术分享

 

二、安装Redispython

1.redispython包下载

我的pythonpython2.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操作数据库了。

三、Pythonredis访问的基本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 当有1wkeys数据被改变时]Redis的数据集保存在叫dump.rdb一个二进制文件,这种策略被称为快照。

可以手动调用SaveBGSAVE命令的:/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文件恢复数据;

如果同时配置了RBDAOF,启动时只加载AOF文件恢复数据;

如果只配置RBD,启动时将加载dump文件恢复数据。

恢复时需要注意,要是主库挂了不能直接重启主库,否则会直接覆盖掉从库的AOF文件,一定要确保要恢复的文件都正确才能启动,否则会冲掉原来的文件。

Redis数据库安装部署

标签:

人气教程排行