Redis 开源缓存数据库

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

一、安装 Redis

[[email protected] src]# tar zxf redis-2.6.10.tar.gz

[[email protected] src]# cd redis-2.6.10

[[email protected] redis-2.6.10]# make

[[email protected] redis-2.6.10]# make install

二、调整 Redis

[[email protected] ~]# mkdir /usr/local/redis

[[email protected] ~]# cd !$

[[email protected] redis]# cp ../src/redis-2.6.10/redis.conf .

[[email protected] redis]# cp ../src/redis-2.6.10/src/redis-cli .

[[email protected] redis]# cp ../src/redis-2.6.10/src/redis-server .

[[email protected] redis]# cp ../src/redis-2.6.10/src/redis-sentinel .

[[email protected] redis]# cp ../src/redis-2.6.10/src/redis-benchmark .

[[email protected] redis]# cp ../src/redis-2.6.10/src/redis-check-aof .

[[email protected] redis]# 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.conf

[[email protected] redis]# mv redis.conf redis.conf.bak

[[email protected] redis]# 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

save 300 10

save 60 10000

## 从内存保存数据到磁盘的策略

## 当有 1 条 keys 数据改变时,900 秒刷新到磁盘一次

## 当有 10 条 keys 数据改变时,300 秒刷新到磁盘一次

## 当有 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

## 同步数据到磁盘的规则,

## no 不主动写入磁盘,依赖与系统的写入,一般 30 秒左右写入一次,性能最好,但是持久化没有保证。

## everysec 每秒强制写入磁盘一次,在性能跟持久化方面折中,推荐使用。

## always 每次收到写操作就立即强制写入磁盘,是最有保证的完全持久化,但是速度慢。

#no-appendfsync-on-rewrite yes

## 在日志重写时,不进行命令追加操作,而只是将其放在缓冲区里,避免与命令的追加造成磁盘 IO 上的冲突

#auto-aof-rewrite-percentage 100

## 当前 AOF 文件的大小是上次日志重写得到的 AOF 文件大小的两倍时,自动启动新的日志重写过程

#auto-aof-rewrite-min-size 64mb

## 当前 AOF 文件启动新的日志重写过程的最小值,避免刚启动 redis 时由于文件较小导致频繁重写

#-----------------------------------------------------------------------------------------------------

四、启动 Redis

[[email protected] ~]# echo "vm.overcommit_memory = 1" >> /etc/sysctl.conf

[[email protected] ~]# sysctl vm.overcommit_memory=1

## 调整内核参数,如果不调整 redis 会报一个警告信息

[[email protected] ~]# mkdir /usr/local/redis/data # 创建 data 目录

[[email protected] ~]# mkdir /usr/local/redis/logs # 创建 logs 目录

[[email protected] ~]# redis-server /usr/local/redis/redis.conf # 启动 redis ,需要指定配置文件路径

[[email protected] ~]# netstat -anpt | grep redis

tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 1176/redis-server

五、测试 Redis

-----------------------------------------------------------------------------------------------------

[[email protected] ~]# redis-cli

redis 127.0.0.1:6379> set password 123

OK

redis 127.0.0.1:6379> get password

"123"

redis 127.0.0.1:6379> quit

## 登陆本机的 redis ,写入 keys/value ,读取 keys

[[email protected] ~]# ls /usr/local/redis/data/

## 没有生成 dump.rdb ,因为半持久化的 save 规则没有触发

[[email protected] ~]# redis-cli shutdown

[[email protected] ~]# ls /usr/local/redis/data/

dump.rdb

## 当关闭 redis 的时候,会将内存中的数据保存为 dump.rdb

[[email protected] ~]# redis-server /usr/local/redis/redis.conf

[[email protected] ~]# redis-cli

redis 127.0.0.1:6379> get password

"123"

redis 127.0.0.1:6379> quit

## redis 启动后从 dump.rdb 文件中读取数据,所以数据依然存在

-----------------------------------------------------------------------------------------------------

[[email protected] ~]# rm -rf /usr/local/redis/data/*

[[email protected] ~]# redis-cli

redis 127.0.0.1:6379> set password abcdef

OK

redis 127.0.0.1:6379> get password

"abcdef"

redis 127.0.0.1:6379> quit

[[email protected] ~]# kill -9 `cat /usr/local/redis/logs/redis.pid`

## 当不是正常关闭 redis 时,如 kill -9 、redis 服务器突然宕机等

[[email protected] ~]# ls /usr/local/redis/data/

## 是不会将内存中的数据同步到磁盘的,也就是说不会生成 dump.rdb 文件

[[email protected] ~]# redis-server /usr/local/redis/redis.conf

[[email protected] ~]# redis-cli

redis 127.0.0.1:6379> get password

(nil)

redis 127.0.0.1:6379> quit

## 这时启动 redis ,发现数据丢失了 。如果不能忍受这种丢失可以启动 AOF 全持久化。

原文地址:http://blog.51cto.com/amazing61/2063897

时间: 2024-08-30 08:32:54

Redis 开源缓存数据库的相关文章

Redis等缓存数据库为什么访问会比较快?

首先,我们知道,mysql是持久化存储,存放在磁盘里面,检索的话,会涉及到一定的IO,为了解决这个瓶颈,于是出现了缓存,比如现在用的最多的 memcached(简称mc).首先,用户访问mc,如果未命中,就去访问mysql,之后像内存和硬盘一样,把数据复制到mc一部分redis和mc都是缓存,并且都是驻留在内存中运行的,这大大提升了高数据量web访问的访问速度.然而mc只是提供了简单的数据结构,比如 string存储:redis却提供了大量的数据结构,比如string.list.set.hash

redis缓存数据库

缓存数据库介绍 redis操作 缓存数据库介绍 NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,泛指非关系型的数据库,随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展.NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题. NoSQL数据库的

缓存数据库redis

什么是Redis? Redis是一个TCP服务器,支持请求/响应协议. 在Redis中,请求通过以下步骤完成: 客户端向服务器发送查询,并从套接字读取,通常以阻塞的方式,用于服务器响应. 服务器处理命令并将响应发送回客户端. Redis是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库,缓存和消息中间件.它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询,

Spring Boot 整合Redis 实现缓存

本文提纲 一.缓存的应用场景 二.更新缓存的策略 三.运行 springboot-mybatis-redis 工程案例 四.springboot-mybatis-redis 工程代码配置详解 运行环境: Mac OS 10.12.x JDK 8 + Redis 3.2.8 Spring Boot 1.5.1.RELEASE 一.缓存的应用场景 什么是缓存? 在互联网场景下,尤其 2C 端大流量场景下,需要将一些经常展现和不会频繁变更的数据,存放在存取速率更快的地方.缓存就是一个存储器,在技术选型

Redis缓存数据库服务器

Redis缓存数据库服务器Redis是一个开源的科技与内存也可持久化的日志型.Key-Value数据库Redis的存储分为内存存储.磁盘存储和Log文件三部分,配置文件中有三个参数对其进行配置. 优势:和Mecached相比,它更加安全也支持存储的value类型相对更多.Redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步 /var/log/redis_6379.log 日志文件/var/lib/redis/6379

Python基础16 - RabbitMQ队列、Redis缓存数据库

@@@文章内容参照老男孩教育 Alex金角大王,武Sir银角大王@@@ RabbitMQ队列 下载安装http://www.rabbitmq.com/install-windows.html RabbitMQ 教程官网:http://www.rabbitmq.com/getstarted.html RabbitMQ:erlang语言 开发的. Python中连接RabbitMQ的模块:pika .Celery(分布式任务队列) .haigha可以维护很多的队列 几个概念说明: Broker:简单

Redis简介以及和其他缓存数据库的区别

一.Redis简介 Redis 是一个开源的内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件. 它支持多种类型的数据结构,如字符串(Strings),散列(Hashes),列表(Lists),集合(Sets),有序集合(Sorted Sets或者是ZSet) 与范围查询, Bitmaps,Hyperloglogs 和 地理空间(Geospatial)索引半径查询. 其中常见的数据结构类型有String.List.Set.Hash.ZSet这5种. Redis 内置了复制(Replic

用Redis作为Mysql数据库的缓存【转】

用Redis作Mysql数据库缓存,必须解决2个问题.首先,应该确定用何种数据结构存储来自Mysql的数据:在确定数据结构之后,还要考虑用什么标识作为该数据结构的键. 直观上看,Mysql中的数据都是按表存储的:更微观地看,这些表都是按行存储的.每执行一次select查询,Mysql都会返回一个结果集,这个结果集由若干行组成.所以,一个自然而然的想法就是在Redis中找到一种对应于Mysql行的数据结构.Redis中提供了五种基本数据结构,即字符串(string).列表(list).哈希(has

快速搭建Redis缓存数据库

之前一篇随笔——Redis安装及主从配置已经详细的介绍过Redis的安装于配置.本文要讲的是如何在已经安装过Redis的机器上快速的创建出一个新的Redis缓存数据库. 一.环境介绍 1) Linux版本:Red Hat Enterprise Linux Server release 6.1 (Santiago) 2) Redis版本:Redis 2.6.16  64 bit 3) Redis安装路径:/usr/local/webserver/redis 二.安装步骤 1) 将/usr/loca