Redis简介
redis是一个基于键值对(key-value)的NoSql数据库。与传统数据库不同的是redis的数据是存在于内存中的,所以读写速度非常快,因此redis被广泛应用于缓存中。与很多键值对数据库不同的是,redis还内置了多种数据结构和算法:string、hash、list、set、zset、Bitmaps、HyperLogLog、GEO。
另外,redis也经常用来做分布式锁。redis提供了多种数据类型来支持不同的业务场景。除此之外,redis支持事务、持久化、LUA脚本、LUA驱动事件、多种集群方案。
redis特性
-
速度快
- redis的所有数据都是存在于内存中的,这是redis速度快的主要原因
- redis是由C语言写成,距离操作系统更近,执行速度会更快
- redis使用单线程结构,预防了多线程可能产生的竞争问题
- 作者对redis源码的精细打磨
-
基于键值对的数据结构服务器
redis的全称为remote dictionary server,redis数据最基础的组织结构是键值对,在这之上又主要提供了5种数据结构:字符串、字典、列表、集合、有序集合。同时在字符串的基础之上演变出了位图(Bitmaps) 和HyperLogLog两种神奇的“数据结构”, 并且随着LBS(Location Based Service, 基于位置服务) 的不断发展, Redis3.2版本中加入有关GEO(地理信息定位) 的功能。
-
丰富的功能
除了5种数据结构,redis还提供着其他丰富的功能
- 提供健过期功能,可以用来实现缓存
- 提供发布和订阅功能,可以用来实现消息系统
- 支持Lua脚本功能,可以利用Lua创造出新的redis命令
- 提供了流水线(Pipeline) 功能, 这样客户端能将一批命令一次性传到Redis, 减少了网络的开销
-
简单稳定
redis的简单体现在3个方面:源码少,使用单线程,不依赖操作系统类库
-
客户端语言多
Redis提供了简单的TCP通信协议, 很多编程语言可以很方便地接入到Redis, 并且由于Redis受到社区和各大公司的广泛认可, 所以支持Redis的客户端语言也非常多, 几乎涵盖了主流的编程语言。
-
持久化
通常看, 将数据放在内存中是不安全的, 一旦发生断电或者机器故障,重要的数据可能就会丢失, 因此Redis提供了两种持久化方式: RDB和AOF, 即可以用两种策略将内存的数据保存到硬盘中。
-
主从复制
Redis提供了复制功能, 实现了多个相同数据的Redis副本, 复制功能是分布式Redis的基础。
-
高可用和可分布式
Redis从2.8版本正式提供了高可用实现Redis Sentinel, 它能够保证Redis节点的故障发现和故障自动转移。 Redis从3.0版本正式提供了分布式实现Redis Cluster, 它是Redis真正的分布式实现, 提供了高可用、 读写和容量的扩展性。
Linux上安装Redis(源码方式安装)
安装之前,需要清楚自己想要安装哪个版本的redis,可以上Redis官网网查看,以3.0.7版本为例。
$ wget http://download.redis.io/releases/redis-3.0.7.tar.gz
$ tar xzf redis-3.0.7.tar.gz
$ ln -s redis-3.0.7 redis
$ cd redis
$ make
$ make install
- 下载Redis指定版本的源码压缩包到当前目录。
- 解压缩Redis源码压缩包。
- 建立一个redis目录的软连接, 指向redis-3.0.7。
- 进入redis目录。
- 编译(编译之前确保操作系统已经安装gcc) 。
- 安装。