BCSP-玄子Share-Java框基础_双系统Redis安装与基础语法
四、Redis
4.1 Redis 简介
Redis 是开源、高性能的key-value数据库,属于 NoSQL 数据库
NoSQL 数据库与关系型数据库
- 关系型数据库:采用关系模型来组织数据,主要用于存储格式化的数据结构
- NoSQL 数据库:泛指非关系型数据库,向外提供特定的 API 而不是通用的 SQL 接口,数据访问更加高效
4.1.1 Redis 的特点
- 不仅支持简单的 string 类型数据,同时还提供 list、set、zset、hash 等数据结构的存储
- 支持数据持久化,可以将内存中的数据保存在磁盘中
- 支持 master-slave 模式的数据备份
4.2 Linux 安装 Redis
4.2.1 前置条件
Linux 本地体验需安装 Linux 虚拟机

Linux 安装 Redis 需学到第 15 节
【小白入门 通俗易懂】2021韩顺平 一周学会Linux
https://www.bilibili.com/video/BV1Sv411r7vd?p=15&vd_source=3b9216711765e1ac14ef21c8216ed8eb
4.2.2 安装包
redis https://download.redis.io/releases/

选择需要的版本下载即可
4.2.3 安装教程
此处默认您已会使用 VM 虚拟机运行 Linux 系统,包括 Xshell 与 Xftp

虚拟机输入
ifconfig -a获取 Linux IP 地址

使用 Xftp 将 Redis 安装包上传到 Linux

使用 Xshell 连接 Linux 输入
ll查看上传状态然后输入
tar -zxvf Redis 文件名解压 Redis 压缩包Redis 文件名输入两个字母按下 Tab 键可自动补全

输入
cd进入到解压后的 Redis 目录

因为 Redis 使用 C 编写,所以需安装 GCC 依赖
输入
yum install -y gcc这里的
-y表示一键安装

安装完成后输入
gcc -v校验安装再输入
make install安装 Redis

输入
cd utils进入到utlis目录

输入
./install_server.sh执行脚本

这里可能会出现报错,打开脚本注释以下内容后重新执行


执行脚本可对 Redis 进行设置,无特殊需求直接回车结束即可
4.2.4 校验

4.3 Windows 安装 Redis
4.3.1 安装包
Redis for Windows 5.0.14.1 https://github.com/tporadowski/redis/releases/tag/v5.0.14.1

Redis 7.0.11 for Windows https://github.com/zkteco-home/redis-windows/releases/tag/7.0.11

4.3.2 安装教程


选择安装路径,并勾选下方选项,将 Redis 添加到系统环境变量

这个是 Redis 默认的端口号,无特殊需求不用改

设置最大内存限制,无特殊需求不用改
4.3.3 校验
键盘按下 Win + R 输入 cmd打开命令提示符,输入以下指令


4.3.4 RedisDesktopManager
RedisDesktopManager https://github.com/RedisInsight/RedisDesktopManager/releases/tag/2022.5


4.4 Linux 配置 Redis
4.4.1 环境配置
设置内存分配策略
echo 1 > /proc/sys/vm/overcommit_memory
开放Redis端口
- 配置防火墙开放6379端口
- 重启防火墙使规则生效
4.4.2 配置文件
设置Redis配置文件redis.conf
- 设置Redis服务可以监听的请求IP地址,多个IP地址使用空格分隔
bind 127.0.0.1 ::
- bind 0.0.0.0或使用 # 将bind指令注释掉,则可监听所有IP地址的请求
- 如果Redis服务运行于Internet上,建议仅绑定应用相关的客户端IP地址
- 设置Redis监听端口,默认是6379
port 6379
- 设置Redis访问密码,默认不需要密码
requirepass 123456
由于Redis的高性能特性,可以在很短的时间内并行尝试大量密码,因此应使用一个高强度的密码
- 设置Redis是否作为守护进程运行,默认no
daemonize yes
- 设置Redis的日志文件路径,默认"",不生成日志文件
logfile "/usr/local/redis-3.2.8/log/redis.log"
- 设置Redis数据库数量,默认是16
databases 16
- Redis中不同的可选数据库以命名空间的形式管理,数据文件是同一个2. Redis划分数据库主要用于在必要的情况下分隔同一应用中存储的key(不同数据库中可以使用相同名称的key),而不是为了区分多个应用
- 设置Redis的工作目录(即Redis的数据文件的存储目录),默认为 ./,即在Redis安装目录下
dir /data/redisdata/
4.4.3 启动Redis服务
- 执行Redis安装目录下bin目录中的redis-server命令
cd /usr/local/redis-3.2.8/
./bin/redis-server ./etc/redis.conf
启动Redis服务所依据的配置文件
注意daemonize指令设置为no或yes的区别
- 可以使用tail命令跟踪Redis日志信息
tail -F /usr/local/redis-3.2.8/log/redis.log
- daemonize为no时,可以另外开启一个会话连接至Redis服务器,并在此会话中跟踪Redis日志内容的变化2. 如果Redis的日志文件路径为默认的 logfile “”,则不会创建日志文件,daemonize为yes时,日志信息会直接输出在控制台中
4.4.4 启动Redis客户端
执行Redis安装目录下bin目录中的redis-cli命令
redis-cli [选项]
| 选项 | 说明 |
|---|---|
-h <hostname> | 服务器主机地址,默认为127.0.0.1 |
-p <port> | 服务端口,默认为6379 |
-a <password> | Redis服务访问密码 |
-n <dbid> | 所要连接的数据库的id,默认为0 |
### 连接到本地Redis服务中dbid为0数据库
cd /usr/local/redis-3.2.8/
./bin/redis-cli
4.5 Windows 配置 Redis
Windows 版 Redis 不支持 daemonize 参数
- MSI 软件包可以直接将 Redis 安装成 Windows 服务,并通过 redis.windows-service.conf 文件配置其他参数
- 解压版 Redis 需通过命令将 redis-server.exe 注册为服务
// 进入到Redis的安装目录下执行
redis-server --service-install redis.windows.conf --loglevel verbose
其他配置参数、使用方式与 Linux 版相同
4.6 Redis常用命令
4.6.1 认证和退出操作
auth
- 请求进行身份验证
- 如果password与配置文件中的密码匹配,则返回OK状态代码并开始接受命令。否则返回错误quit要求服务器关闭连接
auth password
quit
- 要求服务器关闭连接
4.6.2 键值对操作
set
- 设置key以保存value(string类型)
- set正确执行,返回字符串OK。未执行set操作,则返回空回复nil
set key value [ex seconds | px milliseconds] [nx | xx]
- ex:设置指定的过期时间seconds,以秒为单位
- px:设置指定的过期时间milliseconds,以毫秒为单位
- nx:仅在key不存在时设置该key(只创建、不覆盖)
- xx:仅在key已存在时设置该key(只覆盖、不创建)
get
- 获取key对应value
- 如果key不存在,则返回特殊值nil。如果存储在key中的值不是字符串,则返回错误,因为get仅处理字符串值
get key
4.6.3 key 操作
exists
- 判断指定的key是否存在
- 从Redis 3.0.3开始,可以指定多个key
- 仅指定一个key时,key存在返回1,不存在返回0。
- 指定多个key时,返回存在的key的总数
exists key1 [key2 ...]
keys
- 返回和pattern(模式)匹配的所有key
keys pattern
支持的常用模式如下
h?llo:匹配单个字符,如hello,hallo,hxllo等h*llo:匹配任意字符,如hllo,heeeello等h[ae]llo:包含一个指定字符,如hello或halloh[^ae]llo:包含除指定字符外的一个字符,如hbllo,hcllo等,不包括hallo和helloh[a-c]llo:匹配指定范围内的一个字符,如hallo,hbllo,hcllo- 如需匹配以上模式中特殊字符,需要使用
\转义
del
- 删除指定的key
- 返回已删除的key的数量。如果key不存在则忽略该key
del key1 [key2 ...]
rename
- 将key重命名为newkey如果newkey已经存在则会被覆盖(此时rename执行隐式del操作)
- 若key不存在返回错误
rename key newkey
4.6.4 生命周期操作
expire
- 在key上设置超时时间timeout,时间以秒为单位
- 设置成功返回1,key不存在返回0
expire key timeout
ttl
- 以秒为单位返回key的剩余生存时间
- Redis 2.8及以上版本,key未设置超时时间返回-1,key不存在返回-2
- Redis 2.6及以下版本,未设置超时时间和key不存在均返回-1
ttl key
persist
- 删除key上现有的超时设置,使key变为永久有效
- 超时设置被删除,返回1
- key不存在或没有关联的超时设置,返回0
persist key
4.6.5 数据库操作
select
- 选择具有指定dbid的Redis逻辑数据库
select dbid
flushdb
- 删除当前所选数据库中的所有key
flushall
- 删除所有现有数据库中的所有key,而不仅仅是当前选定的数据库
4.7 Java 访问 Redis
Jedis 在 Java 应用中实现 Redis 客户端的功能
- 下载 Jedis 依赖
- 下载 Apache Commons Pool 2 组件
Jedis 的使用
- JedisPoolConfig:连接池配置对象
- maxTotal:最大活动连接数,默认为8。-1表示不限制
- maxIdle:最大空闲连接数,默认为8
- minIdle:最小空闲连接数,默认为0
- maxWaitMillis:从池中获取一个资源时的最大等待时间,单位是毫秒,-1表示永不超时
- testOnBorrow:在从池中获取一个资源时,是否提前进行验证操作
- JedisPool:连接池对象
- Jedis:封装Redis访问API的核心类
4.7.1 代码案例
- 普通连接
public class Xz01 {public static void main(String[] args) {Jedis redis = new Jedis("localhost", 6379);System.out.println(redis.ping());}
}
- 数据池连接
先打 jar 包
<!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>5.0.0-beta2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-pool2 -->
<dependency><groupId>org.apache.commons</groupId><artifactId>commons-pool2</artifactId><version>2.11.1</version>
</dependency>
- 工具类
public class JedisAPI {private static final JedisPool jedisPool;static {JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();jedisPoolConfig.setMaxTotal(50);jedisPoolConfig.setMaxIdle(10);jedisPoolConfig.setMinIdle(7);jedisPoolConfig.setMaxWaitMillis(10000);jedisPoolConfig.setTestOnBorrow(true);jedisPool = new JedisPool(jedisPoolConfig, "localhost", 6379, 10000);
// ,"0207",0}public boolean set(String key, String value) {Jedis jedis = null;try {jedis = jedisPool.getResource();jedis.set(key, value);return true;} catch (Exception e) {e.printStackTrace();return false;} finally {if (jedis != null) {jedis.close();}}}public String get(String key) {Jedis jedis = null;String value = null;try {jedis = jedisPool.getResource();value = jedis.get(key);} catch (Exception e) {e.printStackTrace();} finally {if (jedis != null) {jedis.close();}}return value;}public void destroy() {if ((jedisPool != null) || jedisPool.isClosed()) {jedisPool.close();}}public String ping() {Jedis jedis = null;try {jedis = jedisPool.getResource();return jedis.ping();} catch (Exception e) {e.printStackTrace();return "false";} finally {if (jedis != null) {jedis.close();}}}
}
- 调用代码
public class Xz02 {public static void main(String[] args) {JedisAPI jedisAPI = new JedisAPI();String set = jedisAPI.ping();System.out.println(set);jedisAPI.destroy();}
}
玄子Share - Java 开发之框架基础技术 8.2
相关文章:
BCSP-玄子Share-Java框基础_双系统Redis安装与基础语法
四、Redis 4.1 Redis 简介 Redis 是开源、高性能的key-value数据库,属于 NoSQL 数据库 NoSQL 数据库与关系型数据库 关系型数据库:采用关系模型来组织数据,主要用于存储格式化的数据结构NoSQL 数据库:泛指非关系型数据库&…...
android system_server WatchDog简介
简介 android系统中SystemServer WatchDog的主要作用是监控SystemServer进程的运行状态,防止其卡住或者死锁。 具体来说,watchDog线程会定期去检查SystemServer线程的运行情况。如果发现SystemServer线程超过一定时间未有响应,watchDog会认为SystemServer进程发生了问题,这时…...
华为---OSPF协议优先级、开销(cost)、定时器简介及示例配置
OSPF协议优先级、开销、定时器简介及示例配置 路由协议优先级:由于路由器上可能同时运行多种动态路由协议,就存在各个路由协议之间路由信息共享和选择的问题。系统为每一种路由协议设置了不同的默认优先级,当在不同协议中发现同一条路由时&am…...
MEMORY-VQ: Compression for Tractable Internet-Scale Memory
本文是深度学习相关文章,针对《MEMORY-VQ: Compression for Tractable Internet-Scale Memory》的翻译。 MEMORY-VQ:可追溯互联网规模存储器的压缩 摘要1 引言2 背景3 MEMORY-VQ4 实验5 相关工作6 结论 摘要 检索增强是一种强大但昂贵的方法࿰…...
Netty—ChannelHandler
文章目录 一、Channel、ChannelPipeline 以及ChannelHandler 三者的关系❓二、ChannelHandler 是什么?🤔️三、ChannelInboundHandler四、ChannelOutboundHandler 一、Channel、ChannelPipeline 以及ChannelHandler 三者的关系❓ 通过以上对Channel和Ch…...
Android 集成onenet物联网平台
一,在Android应用程序中集成OneNet物联网平台,您可以按照以下步骤进行操作: 注册OneNet账户:首先,您需要在OneNet官方网站上注册一个账户。访问OneNet网站(https://open.iot.10086.cn/ ↗)&…...
java八股文面试[JVM]——如何打破双亲委派模型
双亲委派模型的第一次“被破坏”是重写自定义加载器的loadClass(),jdk不推荐。一般都只是重写findClass(),这样可以保持双亲委派机制.而loadClass方法加载规则由自己定义,就可以随心所欲的加载类,典型的打破双亲委派模型的框架和中间件有tomc…...
一加11/Ace2/10Pro手机如何实现全局120HZ高刷-游戏超级流畅效果
已经成功root啦。安卓13目前也一样支持LSPosed框架,如果你对LSP框架有需求,也可以使 自测120HZ刷新率诞生以后,很多小伙伴用上了就很难回来啦,一加11/Ace2/10Pro/9pro手 机厂商也对新机做了很多的适配,让我们日常使用起…...
微服务主流框架概览
微服务主流框架概览 目录概述需求: 设计思路实现思路分析1.HSF2.Dubbo 3.Spring Cloud5.gRPC Service mesh 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy,skip hardness,make a be…...
Python Flask Web开发二:数据库创建和使用
前言 数据库在 Web 开发中起着至关重要的作用。它不仅提供了数据的持久化存储和管理功能,还支持数据的关联和连接,保证数据的一致性和安全性。通过合理地设计和使用数据库,开发人员可以构建强大、可靠的 Web 应用程序,满足用户的…...
快速学会git版本管理——上传gitee仓库
首先在gitee右上角有一个新建仓库 创建之后打开自己想要上传的文件 右键打开 Git Bash Here 接下来会弹出git的窗口 首先先初始化仓库 用git命令 git init 然后用git add . 上传所有文件上传到暂存区(上一篇文章说过add是单个文件,add . 是所有文件) 没有显示错误 …...
应用在智能洗衣机触摸屏上的电容式触摸芯片
智能型全自动洗衣机可以自动判断水温、水位、衣质衣量、衣物的脏污情况,决定投放适量的洗涤剂和的洗涤程序。当洗衣桶内衣物的多少和质地不同,而注入水使其达到相同的水位时,其总重量是不同的。利用这一点,通过对洗衣电动机低速转…...
npm版本升级报错
解决方法: 执行npm install --legacy-peer-deps依赖对等 npm install xxx --legacy-peer-deps命令用于绕过peerDependency里依赖的自动安装;它告诉npm忽略项目中引入的各个依赖模块之间依赖相同但版本不同的问题,以npm v4-v6的方式去继续执行…...
Vue+Element-ui+SpringBoot搭建后端汽车租赁管理系统
最近在做项目,花了一周的时间搭建了一个十分完备的汽车租赁后端管理系统。页面采用纯Vue2Element-ui搭建,后端采用SpringbootMybatis搭建,数据库采用Mysql。包括了登录验证,根据不同权限进入不同界面、数据增删改查、表格分页、表…...
PKU校园网连接失败
校园网连接失败 连上校园网,显示已经连接但是没有网络,手动输入校园网门户( its.pku.edu.cn )也没有用。 使用 windows自带的疑难解答,分析发现dns解析异常。 解决方案 手动配置IPV4的dns。 同学的电脑可以正常连接dns,将同学…...
STM32存储左右互搏 I2C总线读写FRAM MB85RC16
STM32存储左右互搏 I2C总线读写FRAM MB85RC16 在较低容量存储领域,除了EEPROM的使用,还有铁电存储器FRAM的使用,相对于EEPROM, 同样是非易失性存储单元,FRAM支持更高的访问速度, 其主要优点为没有EEPROM持续写操作跨页…...
【typeof instanceof Object.prototype.toString constructor区别】
几个数据类型判断区别 typeofinstanceofObject.prototype.toStringconstructor typeof 它返回的是一个字符串,表示未经过计算的操作数的类型 typeof(undefined) //"undefined"typeof(null) //"object"typeof(100) //"number"typeof…...
ARM Codec要求
文章目录 前言一、驱动1. linux kernel driver (非V4L2驱动)1.1 porting guide1.2 programing guide1.3 CPU占用率统计1.4 memory使用统计(不包含input/output/working buffer) 2. freeRTOS driver2.1 porting guide,驱动所支持freeRTOS版本列表2.2 programing guid…...
QT多线程
1.QT4.7以前的版本-----线程处理方式 1. 出现的警告 直接使用从UI—>转到槽,就会出现警告 2. 出现的错误 error: invalid operands of types QTimer* and void (QTimer::*)(QTimer::QPrivateSignal) to binary operator& 错误:无效的操作数类型’QTimer…...
【linux命令讲解大全】059.命令行利器:快速执行指定命令的command命令
文章目录 command补充说明语法参数实例 从零学 python command 调用并执行指定的命令。 补充说明 command 命令用于调用指定的命令并执行,命令执行时不查询 shell 函数。command 命令只能执行 shell 内部的命令。 语法 command [参数]参数 指令:需…...
大话软工笔记—需求分析概述
需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...
iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版分享
平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...
PAN/FPN
import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...
Proxmox Mail Gateway安装指南:从零开始配置高效邮件过滤系统
💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「storms…...
篇章二 论坛系统——系统设计
目录 2.系统设计 2.1 技术选型 2.2 设计数据库结构 2.2.1 数据库实体 1. 数据库设计 1.1 数据库名: forum db 1.2 表的设计 1.3 编写SQL 2.系统设计 2.1 技术选型 2.2 设计数据库结构 2.2.1 数据库实体 通过需求分析获得概念类并结合业务实现过程中的技术需要&#x…...
土建施工员考试:建筑施工技术重点知识有哪些?
《管理实务》是土建施工员考试中侧重实操应用与管理能力的科目,核心考查施工组织、质量安全、进度成本等现场管理要点。以下是结合考试大纲与高频考点整理的重点内容,附学习方向和应试技巧: 一、施工组织与进度管理 核心目标: 规…...
车载诊断架构 --- ZEVonUDS(J1979-3)简介第一篇
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 做到欲望极简,了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风。把自己的精力全部用在自己。一是去掉多余,凡事找规律,基础是诚信;二是…...
Linux入门(十五)安装java安装tomcat安装dotnet安装mysql
安装java yum install java-17-openjdk-devel查找安装地址 update-alternatives --config java设置环境变量 vi /etc/profile #在文档后面追加 JAVA_HOME"通过查找安装地址命令显示的路径" #注意一定要加$PATH不然路径就只剩下新加的路径了,系统很多命…...
react-pdf(pdfjs-dist)如何兼容老浏览器(chrome 49)
之前都是使用react-pdf来渲染pdf文件,这次有个需求是要兼容xp环境,xp上chrome最高支持到49,虽然说iframe或者embed都可以实现预览pdf,但为了后续的定制化需求,还是需要使用js库来渲染。 chrome 49测试环境 能用的测试…...
