Java学习Day45:兰喜村(Redis)

news2024/10/21 21:22:45

1.redis概念

1.是什么

redis(c语言开发的高并发键值对数据库)是nosql的一种,是键值存储数据库;

其核心概念是三高:高并发,高可用性和高扩展性;

优点:快速存取高并发

缺点:存储的数据缺少结构化

2.数据种类

字符串类型:String型,使用

set、get  key  value来存取

append  key value  将value追加到原key对应的value后

setnx <key><value>只有在 key 不存在时  设置 key 的值**

哈希散列类型:Map<String,Map<String,String>>

hset  myhset  username viki

hset myhset password 123

list列表型:左压,左右弹;

集合类型set:

有序集合sortset:

2.redis常用指令:

1.在某个数据库内 keys *

2.del key1,key2

3.exists key

4.type key

3.jedis

Redis不仅是使用命令来操作,现在基本上主流的语言都有客户端支持,比如java、C、C#、C++、php、Node.js、Go等。 在官方网站里列一些Java的客户端,有Jedis、Redisson、Jredis、JDBC-Redis、等其中官方推荐使用Jedis和Redisson。 在企业中用的最多的就是Jedis,Jedis同样也是托管在github上,地址:GitHub - redis/jedis: Redis Java client。

依赖:
<dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>2.9.0</version>
        </dependency>

jedis连接池使用步骤:

jedis连接资源的创建与销毁是很消耗程序性能,所以jedis为我们提供了jedis的池化技术,jedisPool在创建时初始化一些连接资源存储到连接池中,使用jedis连接资源时不需要创建,而是从连接池中获取一个资源进行redis的操作,使用完毕后,不需要销毁该jedis连接资源,而是将该资源归还给连接池,供其他请求使用。

1.修改配置redis.conf

#bind 127.0.0.1 -::1
要注释掉
protected-mode no
原来是yes,修改为no

关闭防火墙

2.配置jedis.utils工具类

JedisUtils.java

import java.util.ResourceBundle;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

public class JedisUtils {
	
	private static JedisPoolConfig poolConfig = null;
	private static JedisPool jedisPool = null;
	private static Integer maxTotal = null;
	private static Integer maxIdle = null;
	private static String host = null;
	private static Integer port = null;
	
	static{
		
		//读取配置文件 获得参数值
		ResourceBundle rb = ResourceBundle.getBundle("jedis");
		maxTotal = Integer.parseInt(rb.getString("jedis.maxTotal"));
		maxIdle = Integer.parseInt(rb.getString("jedis.maxIdle"));
		port = Integer.parseInt(rb.getString("jedis.port"));
		host = rb.getString("jedis.host");
		
		poolConfig = new JedisPoolConfig();
		poolConfig.setMaxTotal(maxTotal);
		poolConfig.setMaxIdle(maxIdle);
		jedisPool = new JedisPool(poolConfig,host,port);
	}

	public static Jedis getJedis(){
		Jedis jedis = jedisPool.getResource();
		return jedis;
	}
	
}

jedis.properties

jedis.host=localhost
jedis.port=6379
jedis.maxTotal=30
jedis.maxIdle=10

4.redis集群

1.准备工作

在/redis/src下创建一个集群包group,在其中创建三个不同的端口的实例

7001,7002,7003,然后在其文件夹下均配置redis.conf配置文件,

6379->7001
6379->7002
6379->7003
修改端口号与自己对应
并在redis配置文件中加上replica-announce-ip 192.168.XX.XX指定与实例绑定的ip信息

2.启动

为了方便查看日志,我们打开3个ssh窗口,分别启动3个redis实例,启动命令:

# 第1个
redis-server 7001/redis.conf
# 第2个
redis-server 7002/redis.conf
# 第3个
redis-server 7003/redis.conf

配置主从,分别用 . / redis - cli -p 700X 连接slave,使用 slaveof 192.168.XX.XX 7001

将其设置为7001master的slave

3.查看
在7001中使用

# 连接 7001
redis-cli -p 7001
# 查看状态
info replication

4.哨兵

哨兵用来监控master,可以使用多个哨兵,一般为单数13579,当原master出错后,哨兵会投票,将票数最多的slave票选为新的master;

过程:

1.在group下创建三个文件夹s1,s2,s3

2.每个目录下创建按一个目录创建一个sentinel.conf文件,添加下面的内容:

port 27001
sentinel announce-ip 192.168.XX.XX
sentinel monitor mymaster 192.168.XX.XX 7001 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 60000
dir "/tmp/s1"

解读:

  • port 27001:是当前sentinel实例的端口

  • sentinel monitor mymaster 192.168.XX.XX 7001 2:指定主节点信息

    • mymaster:主节点名称,自定义,任意写

    • 192.168.150.XX XX:主节点的ip和端口

    • 2:选举master时的quorum值

然后将s1/sentinel.conf文件拷贝到s2、s3两个目录中(在/tmp目录执行下列命令):

cp s1/sentinel.conf s2
cp s1/sentinel.conf s3

修改s2、s3两个文件夹内的配置文件,将端口分别修改为27002、27003

3.启动:

打开三个redis实例

# 第1个
redis-sentinel s1/sentinel.conf
# 第2个
redis-sentinel s2/sentinel.conf
# 第3个
redis-sentinel s3/sentinel.conf

将其中监听的master被shutdown后,会由哨兵票选出新的master,原master启动后自动成为slave

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2213771.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Echart自定义饼图

const chartOption computed(() > {return {//与容器边距// grid: {// left: 3%,// right: 4%,// bottom: 3%,// containLabel: true// },// 自定义鼠标悬浮显示内容tooltip: {trigger: item,formatter: function (params: any) {return ${params.value} 个},textS…

新手铲屎官提问,如何在双十一选到性价比高的宠物空气净化器

不知不觉就已经迎来了双十一&#xff0c;这一年即将到头了&#xff0c;意味着我养猫已经是第五个年头了。 当初养猫的时候&#xff0c;就看中了长毛类型的猫&#xff0c;因为感觉摸起来会更舒服&#xff0c;美型到舒服确实是舒服了&#xff0c;但是面临的挑战也不少。其中浮毛…

电脑显示d3dcompiler_47.dll缺失如何修复,马上教你6个修复方法

在用电脑的时候&#xff0c;很多人就遇到过一个叫“计算机缺失d3dcompiler47.dll”的错误提示。在详细解读计算机缺失d3dcompiler_47.dll问题时&#xff0c;我们首先需要了解这个文件的作用&#xff0c;以及缺失d3dcompiler_47.dll对系统的影响和解决方法。 一&#xff0c;d3dc…

『网络游戏』数据库增加主角属性【27】

打开数据库设计表 添加字段 修改服务器脚本&#xff1a;GameMsg.cs 修改服务器脚本&#xff1a;DBMgr.cs 运行服务端 运行客户端 - 点击创建角色进入游戏后左上角的主角UI被打开暂未设计 刷新查看数据库信息 本章结束

VHDL基本结构和逻辑示例

VHDL基本结构和逻辑示例 1.VHDL的基本结构 VHDL的基本结构包含了三段&#xff1a; -- library and package -- entity -- architecturelibrary and package&#xff1a;相关库和软件包&#xff08;相当与c语言的头文件&#xff09; entity&#xff1a;实体&#xff08;描述输…

三、Anaconda 的使用

Anaconda 的使用 前言一、Anaconda 环境使用1.1 虚拟环境操作1.2 使用镜像源 二、PyCharm配置Anaconda环境2.1 第一步2.2 第二步2.3 第三步2.4 第四步2.5 第五步2.6 第六步2.7 第七步2.8 第八步 总结 前言 如果在一个环境中&#xff0c;我们做了多个项目的话&#xff0c;那么后…

SHAP 依赖图

SHAP 依赖图 SHAP 依赖图用于可视化单个特征对机器学习模型预测结果的影响&#xff0c;具体来说&#xff0c;x 轴是特征值&#xff0c;y 轴是 SHAP 值&#xff08;度量特征对预测结果的重要性&#xff09;&#xff0c;这些图可以直观地显示出某个特征是对模型预测起正向还是负…

web前端-----html5----用户注册

以改图为例 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <title>用户注册</title> </hea…

计算机网络:数据链路层 —— 扩展共享式以太网

文章目录 共享式以太网共享式以太网存在的问题在物理层扩展以太网扩展站点与集线器之间的距离扩展共享式以太网的覆盖范围和站点数量 在链路层扩展以太网网桥的主要结构网桥的基本工作原理透明网桥自学习和转发帧生成树协议STP 共享式以太网 共享式以太网是当今局域网中广泛采…

uni-app基础语法(一)

我们今天的学习目标 基础语法1. 创建新页面2.pages配置页面3.tabbar配置4.condition 启动模式配置 基础语法 1. 创建新页面 2.pages配置页面 属性类型默认值描述pathString配置页面路径styleObject配置页面窗口表现&#xff0c;配置项参考pageStyle 我们来通过style修改页面的…

CASA(Carnegie-Ames-Stanford Approach) 模型原理及实践技术

植被作为陆地生态系统的重要组成部分对于生态环境功能的维持具有关键作用。植被净初级生产力&#xff08;Net Primary Productivity, NPP&#xff09;是指单位面积上绿色植被在单位时间内由光合作用生产的有机质总量扣除自养呼吸的剩余部分。植被NPP是表征陆地生态系统功能及可…

C语言:在Visual Studio中使用C语言scanf输入%s出现的栈溢出问题

学了C之后就很少使用C语言了&#xff0c;今天帮同学解答C语言问题&#xff0c;遇到了一个我以前没有遇到过的问题。 一、问题描述 先看以下代码&#xff1a; #include<stdio.h> int main() {char str[100] { 0 };scanf_s("%s", str);printf("%s",…

2024 年 04 月编程语言排行榜,PHP 排名创新低?

编程语言的流行度总是变化莫测&#xff0c;每个月的排行榜都揭示着新的趋势。2024年4月的编程语言排行榜揭示了一个引人关注的现象&#xff1a;PHP的排名再次下滑&#xff0c;创下了历史新低。这种变化对于PHP开发者和整个技术社区来说&#xff0c;意味着什么呢&#xff1f; P…

Java Maven day1014

ok了家人们&#xff0c;今天学习了如何安装和配置Maven项目&#xff0c;我们一起去看看吧 一.Maven概述 1.1 Maven作用 Maven 是专门用于管理和构建 Java 项目的工具&#xff0c;它的主要功能有&#xff1a; 提供了一套标准化的项目结构 提供了一套标准化的构建流程&#x…

力扣41~45题

题41&#xff08;困难&#xff09;&#xff1a; 分析&#xff1a; 这题我开始没什么思路,记录第一个逼我看评论的&#xff0c;后面看评论的方法&#xff0c;真解&#xff0c;借助一个数组&#xff0c;将nums对应数字放对应位置&#xff0c;然后如果下标和数字不同就返回 pyth…

支撑每秒数百万订单无压力,SpringBoot + Disruptor 太猛了!

文章目录 一、支撑每秒数百万订单无压力&#xff0c;SpringBoot Disruptor 太猛了&#xff01;二、项目环境配置1.Maven 配置 (pom.xml)2.Yaml 配置 (application.yml)3.Disruptor 的核心实现4.定义事件工厂&#xff08;OrderEventFactory&#xff09;5.定义事件处理器&#x…

概率 随机变量以及分布

一、基础定义及分类 1、随机变量 随机变量是一个从样本空间&#xff08;所有可能结果的集合&#xff09;到实数集的函数。&#xff08;随机变量的值可以是离散的&#xff0c;也可以是连续的。 &#xff09; 事件可以定义为随机变量取特定值的集合。 2、离散型随机变量 随机变…

怎么才能算AI智能体?

科技界对 AI 智能体的痴迷愈演愈烈。销售从智能体到自动化系统&#xff0c;比如像 Salesforce 和 Hubspot 这样的公司声称可以提供具有颠覆性的 AI 智能体。但是&#xff0c;我还没有看到一个真正令人信服、完全自主的基于 LLM 的智能体。市场上充斥着各种 “废物机器人”&…

OIDS与ERP:物料管理的高效协同

添加HanTop-MKT&#xff0c;咨询物料管理协同解决方案 客户案例 背景&#xff1a; 在当前快速发展的3C自动化行业&#xff0c;企业面临着前所未有的挑战。产品生命周期的缩短、个性化需求的增长以及市场变化的加速&#xff0c;都要求企业必须具备快速响应的能力。在这样的环…

一个月学会Java 第15天 枚举与Debug

Day15 枚举与Debug 这节课我们来看看枚举&#xff0c;和Debug&#xff0c;当我们学完并会用debug之后呢&#xff0c;编码会非常的舒服&#xff0c;而且debug就是调试嘛&#xff0c;所以我们会了debug之后&#xff0c;在程序哪里出问题也可以进行锁定。 第一章 枚举 枚举并不是非…