Redis是一个远程内存数据库,它不仅性能强劲,而且还具有复制特性以及为解决问题而生的独一无二的数据模型。Redis提供了5种不同类型的数据结构,各式各样的问题都可以很自然地映射到这些数据结构上:Redis的数据结构致力于帮助用户解决问题,而不会像其他数据库那样,要求用户扭曲问题来适应数据库。除此之外,通过复制、持久化(persistence)和客户端分片(client-side sharding)等特性,用户可以很方便地将Redis扩展成一个能够包含数百GB数据、每秒处理上百万次请求的系统。
Redis简介
Redis官网: http://redis.io/
Redis是一个开源的高性能键值对数据库。它通过提供多种键值数据类型来适应不同场景下的存储需求,并且借助许多高层级的接口使其可以胜任,如缓存、队列系统的不同角色。
源码托管在github
https://github.com/antirez/redis
历史与发展
2008年,意大利的一家创业公司Merzia推出了一款基于MySQL的网站实时统计系统LLOOGG,然而没过多久该公司的创始人 Salvatore Sanfilippo便 对MySQL的性能感到失望,于是他决定亲自为LLOOGG量身定做一个数据库,并于2009年开发完成,这个数据库就是Redis。 不过Salvatore Sanfilippo并不满足只将Redis用于LLOOGG这一款产品,而是希望更多的人使用它,于是在同一年Salvatore Sanfilippo将Redis开源发布,并开始和Redis的另一名主要的代码贡献者Pieter Noordhuis一起继续着Redis的开发,直到今天。
Salvatore Sanfilippo自己也没有想到,短短的几年时间,Redis就拥有了庞大的用户群体。Hacker News在2012年发布了一份数据库的使用情况调查,结果显示有近12%的公司在使用Redis。国内如新浪微博、街旁网、知乎网,国外如GitHub、Stack Overflow、Flickr等都是Redis的用户。
VMware公司从2010年开始赞助Redis的开发, Salvatore Sanfilippo和Pieter Noordhuis也分别在3月和5月加入VMware,全职开发Redis。
Redis的特性
- 多种数据类型存储
字符串类型
散列类型
列表类型
集合类型
有序集合类型 - 内存存储与持久化
内存的读写速度远快于硬盘
自身提供了持久化功能(RDB、AOF两种方式) - 功能丰富
可用作缓存、队列、消息订阅/发布
支持键的生存时间
按照一定规则删除相应的键 - 简单稳定
相比SQL而言更加简单
不同语言的客户端丰富
基于C语言开发,代码量只有3万多行
Redis的应用场景
缓存(数据查询、短连接、新闻内容、商品内容等等)。(最多使用)
聊天室的在线好友列表。
任务队列。(秒杀、抢购、12306等等)
应用排行榜。
网站访问统计。
数据过期处理(可以精确到毫秒)
分布式集群架构中的session分离。
Redis可执行文件说明

Linux下安装Redis
redis是C语言开发,安装redis需要先将官网下载的源码进行编译,编译依赖gcc环境。如果没有gcc环境,需要安装gcc:
yum install gcc-c++
alt + p
put F:/redis-3.0.0.tar.gz
tar –zxvf redis-3.0.0.tar.gz
进入解压文件夹,cd redis-3.0.0 执行 make
安装:make PREFIX=/usr/local/redis install
安装完后,在/usr/local/redis/bin下有几个可执行文件
redis-benchmark ----性能测试工具
redis-check-aof ----AOF文件修复工具
redis-check-dump ----RDB文件检查工具(快照持久化文件)
redis-cli ----命令行客户端
redis-server ----redis服务器启动命令
redis启动需要一个配置文件,可以修改端口号等信息。
cp redis.conf /usr/local/redis
Redis的多数据库
Redis默认支持16个数据库,对外都是以一个从0开始的递增数字命名,可以通过参数databases来修改默认数据库个数。客户端连接Redis服务后会自动选择0号数据库,可以通过SELECT命令更换数据库,例如选择1号数据库:
Redis> SELECT 1
OK
Redis [1]> GET test
(nil)
说明:
Redis不支持自定义数据库名称。
Redis不支持为每个数据库设置访问密码
Redis的多个数据库之间不是完全隔离的,FLUSHALL命令会清空所有数据库的数据。
多数据库不适用存储不同应用的数据。
Redis的应用举例
缓存(数据查询、短连接、新闻内容、商品内容等等)。(最多使用)
分布式集群架构中的session分离。
聊天室的在线好友列表。
任务队列。(秒杀、抢购、12306等等)(左进右出、右进左出)
应用排行榜。
网站访问统计。
数据过期处理(可以精确到毫秒)
Redis的持久化
Redis的强大功能很大程度上是由于其将所有数据都存储在内存中,为了使Redis在重启后仍能保证数据不丢失,需要将数据从内存中以某种形式持久化到硬盘中。
Redis支持两种方式的持久化,一种是RDB方式,一种是AOF方式。可以单独使用其中一种或将两种结合使用。
RDB方式是通过快照完成的,当符合一定条件时Redis会自动将内存中的所有数据进行快照并且存储到硬盘上。进行快照的条件在配置文件中指定,有2个参数构成:时间和改动的键的个数,当在指定时间内被更改的键的个数大于指定数值时就会进行快照。
RDB是Redis的默认持久化方式。
相关的推荐
Redis内存使用优化与存储
http://www.infoq.com/cn/articles/tq-redis-memory-usage-optimization-storage
Redis复制与可扩展集群搭建
http://www.infoq.com/cn/articles/tq-redis-copy-build-scalable-cluster
Redis 设计与实现
https://redisbook.readthedocs.org/en/latest/
SpringSource发布Spring Data Redis 1.0.0
http://www.infoq.com/cn/news/2012/01/spring-data-redis-1-0-0
Redis内存存储结构分析
http://www.searchtb.com/2011/05/redis-storage.html
来源:https://blog.csdn.net/weixin_44517990/article/details/100900425