首页 / 数据库 / MySQL / Redis 非关系型数据库 ( Nosql )
简介:Redis 是一个开源的,高性能的 key-value 系统,可以用来缓存或存储数据。
Redis 数据可以持久化,并且支持多种数据类型:字符串(string),列表(list),哈希(hash),集合(set)和有序集合(sorted set)。
能够对关系型数据库起到很好的补充作用。它还提供了多种客户端 Python 、Ruby 、Erlang 、PHP ,可以方便调用。持久化:Redis 是一种内存数据库(跟 memcache 类似),在数据存取效率方面很优秀,由于内存中的数据时刻面临丢失的危险,Redis 提供了两种持久化机制,及时将内存中的数据写入磁盘。RDB 利用存储快照的方式把内存数据定期写入磁盘,半持久化
AOF 利用写日志的方式(类似 mysql 的 binlog),每执行一条更改 Redis 数据的命令,就写入到磁盘的一个 aof 文件中Redis 默认开启 RDB 模式,关闭 AOF 模式,因为 AOF 更耗资源,但是对数据安全极高,称为全持久化,按需选择哪种模式。主从功能:为了防止 Redis 磁盘损坏,导致数据丢失,Redis 提供了复制功能,将一个主数据库的数据自动同步到从数据库,防止数据丢失。主从原理:1、从数据库启动后,向主数据库发送 SYNC 命令
2、主数据库收到 SYNC 命令后开始保存快照,在此期间所有发给主数据库的命令都被缓存起来
3、快照保存完后,主数据库把快照和缓存的命令一起发给从数据库
4、从数据库保存主数据发来的快照文件,并依次执行主数据库发来的缓存命令在同步过程中,从数据库不会阻塞,它默认使用同步之前的数据继续响应客户端发来的命令下载地址:https://code.google.com/p/redis/downloads/list一、安装 Redisshell > tar zxf redis-2.6.10.tar.gzshell > cd redis-2.6.10; make; make install二、调整 Redisshell > mkdir /usr/local/redisshell > cd !$shell > cp ../src/redis-2.6.10/redis.conf .shell > cp ../src/redis-2.6.10/src/redis-cli .shell > cp ../src/redis-2.6.10/src/redis-server .shell > cp ../src/redis-2.6.10/src/redis-sentinel .shell > cp ../src/redis-2.6.10/src/redis-benchmark .shell > cp ../src/redis-2.6.10/src/redis-check-aof .shell > cp ../src/redis-2.6.10/src/redis-check-dump .## redis.conf 主配置文件
## redis-cli 命令行操作工具
## redis-server 启动程序
## redis-sentinel 集群管理工具
## redis-benchmark 性能测试工具,测试 redis 在当前系统配置下的读写性能
## redis-check-aof 更新日志检查,--fix 可以修复 log 文件
## redis-check-dump 检查本地数据文件三、编辑 redis.confshell > mv redis.conf redis.conf.bakshell > vim redis.conf
daemonize yes# 以守护进程方式启动pidfile /usr/local/redis/logs/redis.pid# 定义 pid 文件存放路径port 6379# 监听端口timeout 300# 请求超时时间loglevel debug # 定义日志级别logfile /usr/local/redis/logs/redis.log# 定义日志文件路径databases 16 # 启动数据库实例数,默认连接的数据库为 0 ,可以通过 select N 来连接不同的数据库
# 从内存保存数据到磁盘的策略:
save 900 1 # 当有 1 条 keys 数据改变时,900 秒刷新到磁盘一次
save 300 10# 当有 10 条 keys 数据改变时,300 秒刷新到磁盘一次
save 60 10000# 当有 1W 条 keys 数据改变时,60 秒刷新到磁盘一次
rdbcompression yes # dump .rdb 数据库时,是否压缩数据对象
dbfilename dump.rdb# dump 数据库时,数据库保存的文件名
dir /usr/local/redis/data/ # dump 时数据库保存的路径#-----------------------------------------------------------------------------------------------------appendonly no# 是否开启日志功能,如果开启每次操作都会记录一条日志,相当于 mysql 的 binlog ,但是会影响效率#appendfilename appendonly.aof # AOF 文件名称,默认为 ppendonly.aof#appendfsync everysec# 同步数据到磁盘的规则: #1、 no 不主动写入磁盘,依赖与系统的写入,一般 30 秒左右写入一次,性能最好,但是持久化没有保证。 #2、 everysec 每秒强制写入磁盘一次,在性能跟持久化方面折中,推荐使用。 #3、 always 每次收到写操作就立即强制写入磁盘,是最有保证的完全持久化,但是速度慢。#no-appendfsync-on-rewrite yes # 在日志重写时,不进行命令追加操作,而只是将其放在缓冲区里,避免与命令的追加造成磁盘 IO 上的冲突#auto-aof-rewrite-percentage 100 # 当前 AOF 文件的大小是上次日志重写得到的 AOF 文件大小的两倍时,自动启动新的日志重写过程#auto-aof-rewrite-min-size 64mb# 当前 AOF 文件启动新的日志重写过程的最小值,避免刚启动 redis 时由于文件较小导致频繁重写#-----------------------------------------------------------------------------------------------------## 设置在向客户端应答时,是否把较小的包合并为一个包发送四、启动 Redisshell > echo "vm.overcommit_memory = 1" >> /etc/sysctl.confshell > sysctl vm.overcommit_memory=1## 调整内核参数,如果不调整 redis 会报一个警告信息shell > mkdir /usr/local/redis/data # 创建 data 目录shell > mkdir /usr/local/redis/logs # 创建 logs 目录shell > redis-server /usr/local/redis/redis.conf # 启动 redis ,需要指定配置文件路径shell > netstat -anpt | grep redistcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 1176/redis-server五、测试 Redis-----------------------------------------------------------------------------------------------------shell > redis-cliredis 127.0.0.1:6379> set password 123OKredis 127.0.0.1:6379> get password"123"redis 127.0.0.1:6379> quit## 登陆本机的 redis ,写入 keys/value ,读取 keysshell > ls /usr/local/redis/data/## 没有生成 dump.rdb ,因为半持久化的 save 规则没有触发shell > redis-cli shutdownshell > ls /usr/local/redis/data/dump.rdb## 当关闭 redis 的时候,会将内存中的数据保存为 dump.rdbshell > redis-server /usr/local/redis/redis.confshell > redis-cliredis 127.0.0.1:6379> get password"123"redis 127.0.0.1:6379> quit## redis 启动后从 dump.rdb 文件中读取数据,所以数据依然存在-----------------------------------------------------------------------------------------------------shell > rm -rf /usr/local/redis/data/*shell > redis-cliredis 127.0.0.1:6379> set password abcdefOKredis 127.0.0.1:6379> get password"abcdef"redis 127.0.0.1:6379> quitshell > kill -9 `cat /usr/local/redis/logs/redis.pid`## 当不是正常关闭 redis 时,如 kill -9 、redis 服务器突然宕机等shell > ls /usr/local/redis/data/## 是不会将内存中的数据同步到磁盘的,也就是说不会生成 dump.rdb 文件shell > redis-server /usr/local/redis/redis.confshell > redis-cliredis 127.0.0.1:6379> get password(nil)redis 127.0.0.1:6379> quit## 这时启动 redis ,发现数据丢失了 。如果不能忍受这种丢失可以启动 AOF 全持久化。下面关于Redis的文章您也可能喜欢,不妨参考下:Ubuntu 14.04下Redis安装及简单测试 http://www.linuxidc.com/Linux/2014-05/101544.htmRedis主从复制基本配置 http://www.linuxidc.com/Linux/2015-03/115610.htmRedis集群明细文档 http://www.linuxidc.com/Linux/2013-09/90118.htmUbuntu 12.10下安装Redis(图文详解)+ Jedis连接Redis http://www.linuxidc.com/Linux/2013-06/85816.htmRedis系列-安装部署维护篇 http://www.linuxidc.com/Linux/2012-12/75627.htmCentOS 6.3安装Redis http://www.linuxidc.com/Linux/2012-12/75314.htmRedis安装部署学习笔记 http://www.linuxidc.com/Linux/2014-07/104306.htmRedis配置文件redis.conf 详解 http://www.linuxidc.com/Linux/2013-11/92524.htmRedis 的详细介绍:请点这里
Redis 的下载地址:请点这里本文永久更新链接地址