【云原生进阶之PaaS中间件】第一章Redis-1.1简介

2023-10-16 12:37:02 浏览数 (2)

1 Redis概述

1.1 Redis 简介

Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API,可用作数据库,高速缓存和消息队列代理。Redis是完全开源免费的、遵守BSD协议。

Redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括字符串、哈希表、列表、集合、有序集合,位图,hyperloglogs等数据类型。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

Redis 是一个高性能的key-value数据库,内置复制、Lua脚本、LRU收回、事务以及不同级别磁盘持久化功能。 Redis的出现,很大程度弥补了memcached这类key/value存储的不足,在部分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C ,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便。

Redis支持主从同步,通过Redis Sentinel提供高可用,通过Redis Cluster提供自动分区。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。存盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助。

Redis的官网地址,非常好记,是redis.io,(域名后缀io属于国家域名,是british Indian Ocean territory,即英属印度洋领地),Vmware在资助着redis项目的开发和维护。

从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。

概括来说,Redis 与其他 key - value 缓存产品有以下三个特点:

  • Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
  • Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
  • Redis支持数据的备份,即master-slave模式的数据备份。

1.2 Redis 优势

Redis竞品对比

  • 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
  • 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
  • 原子 – Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
  • 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。

1.3 Redis与其他key-value存储有什么不同?

  • Redis有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径。Redis的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象。
  • Redis运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存,应为数据量不能大于硬件内存。在内存数据库方面的另一个优点是, 相比在磁盘上相同的复杂的数据结构,在内存中操作起来非常简单,这样Redis可以做很多内部复杂性很强的事情。 同时,在磁盘格式方面他们是紧凑的以追加的方式产生的,因为他们并不需要进行随机访问。

2 Redis 安装

2.1 Window 下安装

下载地址:https://github.com/dmajkic/redis/downloads。

下载到的Redis支持32bit和64bit。根据自己实际情况选择,将64bit的内容cp到自定义盘符安装目录取名redis。 如 C:reids

打开文件夹,内容如下:

打开一个cmd窗口 使用cd命令切换目录到 C:redis 运行

代码语言:javascript复制
redis-server.exe redis.conf 

如果想方便的话,可以把redis的路径加到系统的环境变量里,这样就省得再输路径了,后面的那个redis.conf可以省略,如果省略,会启用默认的。输入之后,会显示如下界面:

这时候另启一个cmd窗口,原来的不要关闭,不然就无法访问服务端了。

切换到redis目录下运行

代码语言:javascript复制
redis-cli.exe -h 127.0.0.1 -p 6379

设置键值对

代码语言:javascript复制
set myKey abc

取出键值对

代码语言:javascript复制
get myKey

2.2 Linux 下源码安装

下载地址:http://www.redis.net.cn/download/,下载最新文档版本。

本教程使用的最新文档版本为 2.8.17,下载并安装:

代码语言:javascript复制
$ wget http://download.redis.io/releases/redis-2.8.17.tar.gz$ tar xzf redis-2.8.17.tar.gz$ cd redis-2.8.17$ make

make完后 redis-2.8.17目录下会出现编译后的redis服务程序redis-server,还有用于测试的客户端程序redis-cli

下面启动redis服务.

代码语言:javascript复制
$ ./redis-server

注意这种方式启动redis 使用的是默认配置。也可以通过启动参数告诉redis使用指定配置文件使用下面命令启动。

代码语言:javascript复制
$ ./redis-server redis.conf

redis.conf是一个默认的配置文件。我们可以根据需要使用自己的配置文件。

启动redis服务进程后,就可以使用测试客户端程序redis-cli和redis服务交互了。 比如:

代码语言:javascript复制
$ ./redis-cliredis> set foo barOKredis> get foo"bar"

2.3 Ubuntu 下apt命令安装

在 Ubuntu 系统安装 Redi 可以使用以下命令:

代码语言:javascript复制
$sudo apt-get update$sudo apt-get install redis-server

2.3.1 启动 Redis

代码语言:javascript复制
$redis-server

2.3.2 查看 redis 是否启动?

代码语言:javascript复制
$redis-cli

以上命令将打开以下终端:

代码语言:javascript复制
redis 127.0.0.1:6379>

127.0.0.1 是本机 IP ,6379 是 redis 服务端口。现在我们输入 PING 命令。

代码语言:javascript复制
redis 127.0.0.1:6379> pingPONG

以上说明我们已经成功安装了redis。

参考链接

Redis 详解

Redis概述

Redis中文官网

Redis

《云原生进阶之容器》专题索引:

  1. 第一章Docker核心技术1.1节——Docker综述
  2. 第一章Docker核心技术1.2节——Linux容器LXC
  3. 第一章Docker核心技术1.3节——命名空间Namespace
  4. 第一章Docker核心技术1.4节——chroot技术
  5. 第一章Docker核心技术1.5.1节——cgroup综述
  6. 第一章Docker核心技术1.5.2节——cgroups原理剖析
  7. 第一章Docker核心技术1.5.3节——cgroups数据结构剖析
  8. 第一章Docker核心技术1.5.4节——cgroups使用
  9. 第一章Docker核心技术1.6节——UnionFS
  10. 第一章Docker核心技术1.7节——Docker镜像技术剖析
  11. 第一章Docker核心技术1.8节——DockerFile解析
  12. 第一章Docker核心技术1.9节——docker-compose容器编排
  13. 第一章Docker核心技术1.10节——Docker网络模型设计
  14. 第二章——Kubernetes概述
  15. 第二章Controller Manager原理剖析--2.1节Controller Manager综述
  16. 第二章Controller Manager原理2.2节--client-go剖析
  17. 第二章Controller Manager原理2.3节--Reflector分析
  18. 第二章Controller Manager原理2.4节--Informer机制剖析
  19. 第二章Controller Manager原理2.5节--DeltaFIFO剖析
  20. 第二章Controller Manager原理2.6节--Informer controller
  21. 第二章Controller Manager原理2.7节--Indexer剖析
  22. 第二章Controller Manager原理2.8节--Resync机制
  23. 第三章List-Watch机制3.1节-- List-Watch机制剖析
  24. 第四章Operator原理4.1节--定制资源(Custom Resource)
  25. 第四章Operator原理4.2节--CRD
  26. 第四章Operator原理4.3节--Operator模式
  27. 第四章Operator原理4.4节--Operator深入实践
  28. 第五章容器运行时5.1节--容器运行时总述
  29. 第五章容器运行时5.2节--容器运行时接口规范CRI
  30. 第五章容器运行时5.3.1--runC简介与使用
  31. 第五章容器运行时5.3.2--runC原理解读
  32. 第五章容器运行时5.4--容器运行时之Firecracker
  33. 第五章容器运行时5.5--容器运行时之Kata Container
  34. 第五章容器运行时5.6--容器运行时之gVisor
  35. 第六章容器网络6.1--Docker网络模型
  36. 第六章容器网络6.2--K8S网络模型
  37. 第六章容器网络6.3--CNI及各CNI网络解决方案简述
  38. 第六章容器网络6.4.1--Flannel组网方案综述
  39. 第六章容器网络6.4.2--Flannel的安装与部署
  40. 第六章容器网络6.4.3--Flannel网络模式
  41. 第六章容器网络6.5.1--Calico网络方案综述
  42. 第六章容器网络6.5.2--Calico网络架构详述
  43. 第六章容器网络6.5.3--Calico安装与部署
  44. 第六章容器网络6.6.1--Cilium网络方案概述
  45. 第六章容器网络6.6.2--Cilium部署
  46. 第六章容器网络6.7.1--阿里云Terway网络模式综述

0 人点赞