k8s 手动恢复redis 集群_看一遍就知道-Redis的缓存原理

fd5d7372243682cc977bd68475d62c3b.png

1. Redis是什么

Redis 是一个高性能的开源的、C语言写的Nosql(非关系型数据库),数据保存在内存中。 Redis 是以key-value形式存储,和传统的关系型数据库不一样。不一定遵循传统数据库的些基本要求,比如说,不遵循sql标准,事务,表结构等等,非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合。 Java中数据结构:String,数组,list,set map… Redis提供了很多的方法,可以用来存取各种数据结构的数据。

2.特点(优势)

1.数据保存在内存,存取速度快,并发能力强
2.它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、 zset(sorted set --有序集合)和hash(哈希类型)。
3.redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部分场合可以对关系数据库(如MySQL)起到很好的补充作用。
4.它提供了Java,C/C++,C#,PHP,JavaScript等客户端,使用很方便。
5.Redis支持集群(主从同步、负载均衡)。数据可以主服务器向任意数量从的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。
6.支持持久化,可以将数据保存在硬盘的文件中
7.支持订阅/发布(subscribe/publish)功能 QQ群
1、数据存放:存放到内存中,还能不定期持久化到磁盘。存取速度快,并发能力强,断电后数据不丢失。
2、支持Value类型更多。
3、多种客户端(语言 java php c# js)
4、支持集群来扩展空间 8G+8G+16G
5、开源(免费还有很多人维护)


本人免费分享有关于C/C++,Linux,golang,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,ffmpeg,TCP/IP,协程,DPDK,嵌入式等学习资料,请大家加群私聊管理领取。QQ群:1106675687在腾讯课堂有相关的直播,课程地址:https://ke.qq.com/course/417774?flowToken=1026140免费报名立即学习。

<br> (二维码自动识别)

2cd23988de71d87333c8996b3ceb64e7.png

3. 安装Redis服务端

Redis 的官方下载站是 http://redis.io/download,可以去上面下载最新的安装程序下来
3.1. windows下的安装和使用1.下载redis程序软件
使用redisbin32 或redisbin642.绿色软件,不需要安装,直接使用

a97e697edbb1f85b5a464d735d4066e6.png

3.启动redis服务(带配置文件启动,和不带配置文件启动)

aa879b8c9efce04f37ac4aa0d4014120.png

4.连接到redis进行操作
cmd>{%redis%}/redis-cli -h ip地址 -p 端口号
ip 默认为本地 -p 默认6379
redis-cli -h 172.16.6.248 -p 6379
cmd>{%redis%}/redis-cli

1.基本用法

c909555a79a26c42156498418f469b56.png

2. Redis持久化配置

5624f932b33d3b7155ffcd21d025987e.png

Redis 提供了两种不同级别的持久化方式:RDB和AOF,可以通过修改redis.conf来进行配置.

66a76b71f40294584910766a4a4ae80b.png

当满足持久化条件时,会进行持久化保存,还来不及保存的数据,会以aof日志的方式保存下来。

Redis启动时,先解析日志文件(一堆命令),恢复数据。然后还要加载rdb文件(取并集)。

3.RDB模式

RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照,默认开启该模式.
如何关闭 rdb 模式:
save “”
save 900 1 //至少在900秒的时间段内至少有一次改变存储同步一次
save xxx save 60 10000

4.AOF日志追加模式

AOF 持久化记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集,默认关闭该模式。
如何开启aof模式:
appendonly yes //yes 开启,no 关闭
#appendfsync always //每次有新命令时执行一次fsync,就将缓冲区的数据放入aof文件
#这里我们启用 everysec
appendfsync everysec //每秒 fsync 一次
#appendfsync no //从不fsync(交给操作系统来处理,可能很久才执行一次fsync)
其它的参数请大家看redis.conf配置文件详解

5.Redis经典实用场景-缓存

  1. 6.1为什么要使用缓存
    把经常查询的数据,很少修改的数据存放到缓存中,减少访问数据库,降低数据库压力并且缓存一般都是内存,访问速度比较快。
  2. 6.2哪些数据适合放到缓存中
    经常查询:缓存就是提供数据查询高效访问。
    很少修改:修改时要同步修改缓存和数据库
    例如:地区数据、商品分类、数据字典 菜单(不考虑权限)
  3. 6.3选择合适的缓存
    Hibernate二级缓存,mybatis二级缓存,redis中央缓存
    Hibernate二级缓存,mybatis二级缓存默认不支持集群缓存,要使用redis
  4. 6.4怎么存储数据
    1) json:把要存放的数据转换为json类型的字符串
    保存缓存时:
    Java Object----------->json字符串
    获取缓存:
    json字符串-------->Java Object-
    Json框架:jdk-json-lib jackson gson fastjson

b570a773c9a861414f2c447251a90631.png

列化为二进制序列化框架实现

6. 实现菜单缓存

824c8de25d2586fc065b380f37f2d9eb.png

【Linux服务器开发】高并发项目中redis的应用(中)


【关注我】,不迷路。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Kubernetes (k8s) 是一个容器编排平台,可以轻松地部署、管理和扩展容器化应用程序。Redis 是一个流行的开源内存数据存储系统,可用于缓存、消息传递、队列等多种场景。在 k8s 上部署 Redis 集群需要以下步骤: 1. 创建 Redis 镜像 你可以使用 Dockerfile 创建 Redis 镜像,或者从 Docker Hub 下载 Redis 镜像。例如,可以使用以下命令下载 Redis 镜像: ``` docker pull redis ``` 2. 创建 Redis 配置文件 Redis 集群需要一个配置文件来定义节点和复制策略。可以创建一个 config 文件夹,并在其中创建 redis.conf 文件,配置内容可以参考 Redis 官方文档。 3. 创建 Redis 集群的 YAML 文件 可以使用 k8s 的 YAML 文件定义 Redis 集群。以下是一个示例 YAML 文件: ```yaml apiVersion: apps/v1 kind: StatefulSet metadata: name: redis-cluster spec: serviceName: redis-cluster replicas: 6 selector: matchLabels: app: redis-cluster template: metadata: labels: app: redis-cluster spec: containers: - name: redis image: redis command: - sh args: - -c - | redis-server /config/redis.conf --port $(echo $POD_NAME | cut -d'-' -f2 | cut -d'-' -f1 | sed 's/^0*//'):6379 --cluster-enabled yes --cluster-config-file /data/nodes.conf --cluster-node-timeout 5000 --appendonly yes ports: - containerPort: 6379 name: client - containerPort: 16379 name: gossip volumeMounts: - name: config mountPath: /config - name: data mountPath: /data volumes: - name: config configMap: name: redis-cluster - name: data emptyDir: {} volumeClaimTemplates: - metadata: name: data spec: accessModes: [ "ReadWriteOnce" ] resources: requests: storage: 1Gi --- apiVersion: v1 kind: Service metadata: name: redis-cluster spec: ports: - port: 6379 name: client - port: 16379 name: gossip clusterIP: None selector: app: redis-cluster ``` 这个 YAML 文件定义了一个名为 redis-cluster 的 StatefulSet 和一个名为 redis-cluster 的 Service。StatefulSet 定义了 6 个 Redis 节点,每个节点有一个容器,使用 Redis 镜像,并在容器启动时运行 Redis 命令。每个容器都会挂载 config 文件夹和 data 文件夹,其中 config 文件夹中存放 Redis 配置文件,data 文件夹中存放 Redis 数据。Service 将端口映射到每个容器的端口,同时将 clusterIP 设置为 None,以便其他 Pod 无法通过 Service 访问 Redis 集群。 4. 部署 Redis 集群 使用以下命令部署 Redis 集群: ``` kubectl apply -f redis-cluster.yaml ``` 这将创建一个 redis-cluster 的 StatefulSet 和一个 redis-cluster 的 Service。 5. 验证 Redis 集群 可以使用以下命令验证 Redis 集群是否正常运行: ``` kubectl exec -it redis-cluster-0 -- redis-cli cluster info ``` 这将在第一个 Redis 节点上运行 redis-cli 命令,并输出 Redis 集群的信息。 以上就是在 k8s 上部署 Redis 集群的步骤。需要注意的是,Redis 集群需要至少 3 个节点才能正常运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值