Redis教程

Redis总结1

本文主要是介绍Redis总结1,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1、初识Redis

  Redis作为基于键值对的NoSQL数据库,具有高性能、丰富的数据结构、持久化、高可用、分布式等特性,同时Redis本身非常稳定,已经得到业界的广泛认可和使用。
  Redis由C语言编写,它的数据结构可以由 string、hash、list、set、zset(有序列表)、bitmaps(位图)、HyperLogLog等多种数据结构与算法组成,因为Redis会将所有数据都存放在内存中,所以它的读写性能非常的惊人,不仅如此,Redis还将内存中的数据利用快照和日志的方式存放到硬盘上,它还提供了键过期、发布订阅、事务、流水线、Lua脚本等附加功能。

1.1: Redis的特性

  1. 速度非常快
      Redis由C语言编写,它的数据结构简单,对数据操作也简单。且把所有数据都存放在内存中(主要原因),它使用的是单线程架构,省去了很多上下文切换的时间以及CPU消耗,不存在竞争条件,不用去考虑各种锁的问题,不存在加锁释放锁操作,也不会出现死锁而导致的性能消耗。使用基于IO多路复用机制的线程模型,可以处理并发的链接。
    具体可以看这篇博客:Redis为什么这么快
  2. 丰富的功能
  • 提供了键过期功能,可以用来实现缓存。
  • 提供了发布订阅功能,可以用来实现消息系统。
  • 支持Lua脚本功能,可以利用Lua创造出新的Redis命令。
  • 提供了简单的事务功能,能在一定程度上保证事务特性。
  • 提供了流水线(Pipeline)功能,这样客户端能将一批命令一次性传到 Redis,减少了网络的开销。
  1. 持久化
     Redis提供了两种持久化方式:RDB和 AOF,即可以用两种策略将内存的数据保存到硬盘中(如图所示),这 样就保证了数据的可持久性。
    在这里插入图片描述
  2. 主从复制
     Redis提供了复制功能,实现了多个相同数据的Redis副本(如图所 示),复制功能是分布式Redis的基础。
    在这里插入图片描述
  3. 高可用和分布式
     Redis从2.8版本正式提供了高可用实现Redis Sentinel,它能够保证Redis 节点的故障发现和故障自动转移。Redis从3.0版本正式提供了分布式实现 Redis Cluster,它是Redis真正的分布式实现,提供了高可用、读写和容量的 扩展性。

1.2: Redis的使用场景

Redis可以做什么?

  1. 缓存:
    Redis提供了键值过期时间设置,并且也提供了灵活控制最大内存和内存溢出后的淘汰策略。
  2. 排行榜系统:
    Redis提供了列表 和有序集合数据结构,合理地使用这些数据结构可以很方便地构建各种排行 榜系统。
  3. 计数器应用:
    为了保证数据的实时性,每一次播放和浏览都要做加1的操作,如 果并发量很大对于传统关系型数据的性能是一种挑战。Redis天然支持计数 功能而且计数的性能也非常好,可以说是计数器系统的重要选择。
  4. 社交网络:
    赞/踩、粉丝、共同好友/喜好、推送、下拉刷新等是社交网站的必备功能,由于社交网站访问量通常比较大,而且传统的关系型数据不太适合保存 这种类型的数据,Redis提供的数据结构可以相对比较容易地实现这些功能。
  5. 消息队列系统
    Redis提供了发布订阅功能和阻塞队列的功 能,虽然和专业的消息队列比还不够足够强大,但是对于一般的消息队列功 能基本可以满足。

Redis不能做什么呢?

站在数据规模的角度看,数据可以分为大规模数据和小规模数据,我们 知道Redis的数据是存放在内存中的,虽然现在内存已经足够便宜,但是如果数据量非常大,例如每天有几亿的用户行为数据,使用Redis来存储的话,基本上是个无底洞,经济成本相当的高。

2: Redis的安装与使用

2.1: Redis的安装

在Linux系统下使用源码的方式进行安装,整个安装只需以下六步即可完成:

$ 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

1)下载Redis指定版本的源码压缩包到当前目录。
2)解压缩Redis源码压缩包。
3)建立一个redis目录的软连接,指向redis-3.0.7。
4)进入redis目录。
5)编译(编译之前确保操作系统已经安装gcc)。
6)安装。

注:第一,第3步中建立了一个redis目录的软链接,这 样做是为了不把redis目录固定在指定版本上,有利于Redis未来版本升级, 算是安装软件的一种好习惯。第二,第6步中的安装是将Redis的相关运行文件放到/usr/local/bin/下,这样就可以在任意目录下执行Redis的命令。例如安装后,可以在任何目录执行redis-cli–v查看Redis的版本。

2.2 :Redis的使用

  Redis安装之后,src和/usr/local/bin 目录下多了几个以redis开头可执行文 件,我们称之为Redis Shell,这些可执行文件可以做很多事情,例如可以启动和停止Redis、可以检测和修复Redis的持久化文件,还可以检测Redis的性能。表中分别列出这些可执行文件的说明。
在这里插入图片描述

在这里插入图片描述

2.2.1: 启动Redis

  有三种方法启动Redis:默认配置、运行配置、配置文件启动。
1):默认配置:使用 redis-server
在这里插入图片描述
注:因为直接启动无法自定义配置,所以该方式是不会在生产环境下使用的
2)运行启动
 redis-server加上要修改配置名和值(可以是多对),没有设置的配置将 使用默认配置:

redis-server --configKey1 configValue1 --configKey2 configValue2

 例如,如果要用6380作为端口启动Redis,那么可以执行:

 redis-server --port 6380

 虽然运行配置可以自定义配置,但是如果需要修改的配置较多或者希望 将配置保存到文件中,不建议使用这种方式。

3)配置文件启动
  将配置写到指定文件里,例如我们将配置写到了/opt/redis/redis.conf 中,那么只需要执行如下命令即可启动Redis:

 redis-server /opt/redis/redis.conf

  显然通过配置文件启动的方式提供了更大的灵活性,所以大部分生产环境会使用这种方式启动Redis。
一些基础配置,其他的在后文中介绍:
在这里插入图片描述

提示:
Redis目录下都会有一个redis.conf配置文件,里面就是Redis的默认配 置,通常来讲我们会在一台机器上启动多个Redis,并且将配置集中管理在 指定目录下,而且配置不是完全手写的,而是将redis.conf作为模板进行修改。

2.2:Redis命令行客户端

 redis-cli可以使用两种方式连接Redis服务器

  1. 交互式方式
    通过redis-cli-h{host}-p{port}的方式连接到Redis 服务,之后所有的操作都是通过交互的方式实现,不需要再执行redis-cli 了,例如:
    在这里插入图片描述

2:命令方式

用redis-cli-h ip{host}-p{port}{command}就可以直 接得到命令的返回结果,例如:
在这里插入图片描述

这里有要注意:1)如果没有-h参数,那么默认连接127.0.0.1;如 果没有-p,那么默认6379端口,也就是说如果-h和-p都没写就是连接 127.0.0.1:6379这个Redis实例。

2.3:停止Redis服务

  Redis提供了shutdown命令来停止Redis服务,例如要停掉127.0.0.1上 6379端口上的Redis服务,可以执行如下操作:

redis-cli shutdown

  可以看到Redis的日志输出如下:
在这里插入图片描述

注:
(1)除了可以通过shutdown命令关闭Redis服务以外,还可以通过kill进程号的方式关闭掉Redis,但这种方式,不但不会做持久化操作,还会造成缓冲区等资源不能被优雅关闭,极端情况会造成AOF和复制丢失数据的情况。
(2)shutdown还有一个参数,代表是否在关闭Redis前,生成持久化文件:

powershell redis-cli shutdown nosave|save

这篇关于Redis总结1的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!