Redis 简介

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis 简介相关的知识,希望对你有一定的参考价值。

Redis 简介

Redis 是什么

Redis是一种基于键值对(key-value)的 NoSQL 数据库

Redis 的特点

速度极快
  • Redis 的所有数据都是存放在内存中,这是 Redis 速度快的最主要原因
  • Redis 是用 C 语言实现的,一般来说 C 语言实现的程序“距离”操作系统更近,执行速度相对会更快
  • Redis 使用了单线程架构,预防了多线程可能产生的线程切换和竞争问题
数据类型丰富

与很多键值对数据库不同的是,Redis中的值不仅可以是字符串,而且还可以是具体的数据结构,它主要提供了5种数据结构:字符串、哈希、列表、集合、有序集合。这样不仅能便于在许多应用场景的开发,同时也能够提高开发效率。

简单稳定
  • Redis 的源码很少
  • Redis 使用单线程模型,这样不仅使得 Redis 服务端处理模型变得简单,而且也使得客户端开发变得简单
  • Redis 不需要依赖于操作系统中的类库,Redis 自己实现了事件处理的相关功能,应用更加稳定
支持持久化

通常看,将数据放在内存中是不安全的,一旦发生断电或者机器故障,重要的数据可能就会丢失,因此 Redis 提供了两种持久化方式:RDB 和 AOF,即可以用两种策略将内存的数据保存到硬盘中,这样就保证了数据的可持久性。

主从复制

Redis 提供了复制功能,实现了多个相同数据的 Redis 副本

高可用和分布式

Redis 从 2.8 版本提供了高可用实现 Redis Sentinel(哨兵模式),它能够保证 Redis 节点的故障发现和故障自动转移。

Redis 从 3.0 版本提供了分布式实现 Redis Cluster(集群模式),它是 Redis 真正的分布式实现,提供了高可用、读写和容量的扩展性。

Redis 的应用场景

数据缓存(最多使用)

缓存的两种形式:

  • 页面缓存:第一次从数据库中读取,然后生成一个静态页面,以后所有的读取,只加载这个静态页面就可以了

  • 数据缓存:由于一个页面有几种需要从不同的缓存中读取数据的模块,所以不适合使用页面缓存。

为了提高用户的请求速度和降低服务器的负载,降低数据库的读写次数,将一些在短时间之内不会发生变化且被频繁访问热点数据,存放就到缓存中,其性能优于 Memcached。 (类似于 MyBatis 的缓存机制)

热点数据:数据库中数据被访问的频率是不均匀的,频繁被访问的数据称为热点数据((Hot Spot Data)

排行榜系统

Redis 提供了列表和有序集合数据结构,合理地使用这些数据结构可以很方便地构建各种排行榜系统。

计数器应用

利用 Redis 的原子性,可以轻松地使用 Redis INCR(自增) 和 DECR(自减) 命令来构建计数系统,关键是不用担心数据库的并发性问题,一般用于网站访问统计

数据过期处理

利用 Redis 支持的过期时间特性,可以定时清除过期数据,如定期活动(精确到毫秒)

消息队列系统

消息队列系统可以说是一个大型网站的必备基础组件,因为其具有业务解耦、非实时业务削峰等特性。

Redis 提供了发布订阅功能和阻塞队列的功能,虽然和专业的消息队列比还不够足够强大,但是对于一般的消息队列功能基本可以满足,如秒杀、抢购、12306 等。

社交网络

赞/踩、粉丝、共同好友/喜好、推送、下拉刷新等是社交网站的必备功能,由于社交网站访问量通常比较大,而且传统的关系型数据不太适合保存这种类型的数据,Redis 提供的数据结构可以相对比较容易地实现这些功能,如新浪博客大量使用 Redis 存储数据和实现博客功能。

Redis- redis的简介与安装

 

 


  工作中一直在用 Redis,但是一直没有进行系统的总结,这个系列的博客将整体的介绍 Redis 的用法。

1、Redis 的简介

  Redis:REmote DIctionary Server(远程字典服务)。

  是由意大利人Salvatore Sanfilippo(网名:antirez)开发的一款内存高速缓存数据库。是完全开源免费的,用C语言编写的,遵守BSD协议,高性能的(key/value)分布式内存数据库,基于内存运行并支持持久化NoSQL数据库。

  具体详细的概念可以参考百度百科

  PS:关于 Redis 的具体概念以及具体应用场景,其实现在说都有些空洞,后面我们在介绍 Redis 的相关特性的时候会进行详细介绍。下面我们来直接进行安装(由于主流的都是在Linux服务器上使用Redis,很少有在Windows系统上使用的,所以下面我是以Linux版本的Redis为例进行安装)。

2、Redis 下载

  Redis 的官网是:https://redis.io   这是全英文的,英语不太好的,我们也可以查看中文网站:http://www.redis.cn/ 。

  在官网中点击 Check the downloads page 

  

  进入下载页面,下载最新稳定版的 Redis:

  

3、安装环境

  我们采用虚拟机来模拟Linux服务器。

  虚拟机安装完成之后,我们启动Linux系统,将第二步下载的 redis-4.0.9.tar.gz 文件通过工具复制到 /opt 目录下,然后在通过如下命令进行解压:

1 tar -zxf redis-4.0.9.tar.gz

  解压之后如下图所示:

  

  由于在安装过程中需要对源码进行编译,而编译依赖 gcc 环境。如下图所示,则是没有进行 gcc 的安装:

  

  下面,我们通过如下命令进行 gcc 的安装(yum 方式需要联网):

1 yum install gcc-c++

  安装完成之后,在输入 gcc -v 命令,则不会出现上面的提示信息了。

4、编译安装

  进入到第二步解压的Redis文件目录,然后输入 make 命令进行编译:

1 cd /opt/redis-4.0.9
2 make

  

  编译完成之后,还是在该目录下输入 make install 进行构建:

  该命令会生成 Redis的5个二进制文件,默认是在 /usr/local/bin 路径下,但是我们可以手动指定生成的文件位置,将 make install 变成:

1 make PREFIX=/usr/local/redis install 

  

  完成之后,就会在 /usr/local/redis/bin 目录下生成如下几个二进制文件:

  

  ①、redis-server:Redis服务器

  ②、redis-cli:Redis命令行客户端

  ③、redis-benchmark:Redis性能测试工具

  ④、redis-check-aof:AOF文件修复工具

  ⑤、redis-check-rdb:RDB文件检查工具

5、启动Redis

  首先,我们进入 Redis 文件的安装目录:

  

  可以看到该目下有 redis.conf 配置文件,这个文件特别重要,后期的很多配置都是在这里面进行,为了防止该文件被破坏,我们可以将该文件复制到 /etc/redis 目录下:

  

  然后通过如下命令即可启动:

1 /usr/local/redis/bin/redis-server /etc/redis/redis.conf

  启动后出现如下界面:

  

  注意:此种方式启动 Redis,当我们关闭命令窗口时,则 redis-server 程序也结束了,这显然是不友好的,我们需要将Redis设置为以守护进程的方式进行启动。

  在 redis.conf 文件中,找到daemonize,将其设置为yes即可:

  

  还是以上面的命令启动 redis-server 服务。

  启动之后可以通过如下命令查看 Redis 服务是否启动:

1 ps -ef | grep redis

  启动完成之后,我们执行第 4 步编译安装的 redis-cli 文件,输入如下命令进入 Redis 客户端:

1 /usr/local/redis/bin/redis-cli

  

6、关闭Redis

  ①、redis-cli shutdown:安全关闭,如果有密码需要加上 -a {password} 参数(推荐使用此方式关闭,会进行持久化文件生成,能够防止数据丢失)。

  ②、kill -9 pid:强制关闭,可能会造成Redis内存数据丢失(不推荐使用)。

7、注意事项

  ①、我们在第 4 步编译安装生成了五个二进制文件,每次要执行该文件都要输入全路径,很不方便,为了能在任何路径下执行该二进制文件,我们可以对其进行环境变量的配置。

  输入 vim /etc/profile 命令,将如下内容添加到文件末尾:

  

  接着输入:wq保存并退出,然后输入 source /etc/profile 使得配置文件生效即可。

  接着我们便可在任意路径下启动Redis服务了:(下面是根目录下启动)

  

 

  ②、可能有部分同学没有安装 gcc,直接在Redis解压目录下执行make 命令,会发现缺少编译器gcc,这时候通过 yum install gcc-c++ 命令安装gcc,然后接着执行 make 命令,但是发现还是报错:

  jemalloc/jemalloc.h:没有那个文件或目录

  原因:这次报错是因为第一次执行 make 命令有一些残存的文件没有清除干净,这时候需要执行 make distclean 命令后,再执行 make 命令即可。

  ③、启动Redis后,有可能我们要在外部通过图形化工具,比如RedisManager 来连接,这时候会报如下错误:

  

 

 

   这是Redis保护模式开启了,我们需要将redis.conf 配置文件中的 protected-mode 属性设置为no即可.或者增加redis连接密码设置:requirepass 123.(123是表示密码)  

以上是关于Redis 简介的主要内容,如果未能解决你的问题,请参考以下文章

001.Redis简介及安装

Redis 简介

大数据之Redis:Redis简介

Redis简介安装和基础入门

redis简介

Redis简介及安装