配置文件、RDB、Jedis
配置文件
# Note on units: when memory size is needed, it is possible to specify
# it in the usual form of 1k 5GB 4M and so forth:
#
# 1k => 1000 bytes
# 1kb => 1024 bytes
# 1m => 1000000 bytes
# 1mb => 1024*1024 bytes
# 1g => 1000000000 bytes
# 1gb => 1024*1024*1024 bytes
#
# units are case insensitive so 1GB 1Gb 1gB are all the same.
配置文件不区分大小写
# include .\path\to\local.conf
# include c:\path\to\other.conf
可以导入其他配置文件
网络
bind 127.0.0.1#绑定的ip
protected-mode yes #保护模式
port 6379#默认端口
通用配置GENERAL
daemonize yes #以守护进程的方式运行 默认为no 我们要自己变成yes
pidfile /var/run/redis_6379.pid #如果以后台的方式进行,我们就需要指定一个pid文件
# Specify the server verbosity level.日志级别
# This can be one of:
# debug (a lot of information, useful for development/testing)
# verbose (many rarely useful info, but not a mess like the debug level)
# notice (moderately verbose, what you want in production probably)
# warning (only very important / critical messages are logged)
loglevel notice
logfile ""#日志的文件位置
databases 16#数据库数量,默认16个
always-show-logo yes#打印logo
快照SNAPSHOTTING
在规定的事件执行了多少次操作,则会持久化文件.rdb .aof
#持久化规则
save 900 1
#如果900秒内,如果至少有一个key进行了修改,我们及时进行持久化
save 300 10
#如果300秒内,如果至少有一个10key进行了修改,我们及时进行持久化
save 60 10000
Redis是内存数据库 ,如果没有持久化,那么数据断电小时
stop-writes-on-bgsave-error yes #持久化出错,是否还要需要继续工作
rdbcompression yes#是否压缩rdb文件,消耗cpu资源
rdbchecksum yes#保存rdb文件时,进行检查校验
dir ./#rdb 文件保存的目录
复制REPLICATION (主从复制)
安全SECURITY
设置密码:
config set requirepass "123456"
auth 123456
客户端CLIENTS
默认最大的客户端数:
maxclients 10000
maxmemory <bates>#最大内存设置
# maxmemory-policy noeviction#内存达到上线的处理策略
APPEND ONLY MODE AOF
appendonly no #默认是不开启的默认是rdb方式持久化的,在大部分情况下,rdb完全够用
appendfilename "appendonly.aof"#持久化的文件名字
# appendfsync always #每次修改都会sync 消耗性能
appendfsync everysec #每秒执行一次sync 可能会丢失这一秒的值
# appendfsync no #不执行sync 这个时候操作系统自己同步数据,速度最快
RDB
什么是RDB
RDB持久化,是Redis可以将数据库状态保存到一个RDB文件中,并可以通过该RDB文件生成RDB文件的时候的数据库状态。RDB文件是一个经过压缩的二进制文件。
Jedis
我们要使用java来操作Redis
什么是Jedis
1.配置环境
<dependencies>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.3.0</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.76</version>
</dependency>
</dependencies>
2.编码测试:
- 连接数据库
- 操作命令
- 断开连接
基本代码
package com.Test;
import redis.clients.jedis.Jedis;
import java.util.Set;
public class TestPing {
public static void main(String[] args) {
//1.new 一个Jedis对象
Jedis jedis = new Jedis("127.0.0.1",6379);
//之前的指令很重要
System.out.println(jedis.ping());
//常用api
jedis.flushDB();//清空数据
jedis.exists("name");//某个键值是否存在
jedis.set("name","hjz");//新增键值对
Set<String> keys = jedis.keys("*");//系统中所有键值
jedis.del("name");//删除键
jedis.exists("name");//判断是否存在
jedis.type("name");//判断键的存储类型
jedis.randomKey();//随机返回一个key的空间
jedis.rename("name","username");//重命名
jedis.get("username");//取出username
jedis.select(0);//按照索引查询
jedis.flushDB();//删除选择数据库的值
jedis.dbSize();//返回当前数据库的key的数目
jedis.flushAll();//删除所有数据库的所有key
}
}Spring Boot整合Redis
String类型
package com.Test;
import redis.clients.jedis.Jedis;
import java.util.concurrent.TimeUnit;
public class TestString {
public static void main(String[] args) {
//1.new 一个Jedis对象
Jedis jedis = new Jedis("127.0.0.1",6379);
jedis.set("key1","value1");//添加数据
jedis.set("key2","value2");//添加数据
jedis.set("key3","value3");//添加数据
jedis.del("key1");//删除key1
jedis.get("key2");//得到key2
jedis.set("key3","end");//修改key3
jedis.append("key3","aaa");//在key3后加值
jedis.mset("key01","value1","key02","value02");//增加多个键值对
jedis.mget("key01","key02");//获得多个键值对
jedis.del("key01","key02");//删除多个键值对
//分布式锁的-新增键值对放置覆盖原来的值
jedis.setnx("key1","value1");
jedis.setnx("key2","value2");
jedis.setnx("key3","value3");
jedis.get("key1");
//设置过期时间
jedis.setex("key4",5,"value4");
jedis.get("key4");
//睡觉
try{
TimeUnit.SECONDS.sleep(3);
}catch (InterruptedException e){
e.printStackTrace();
}
//获得原来的值,更新为新值
jedis.getSet("key2","key2Get2");
jedis.get("key2");
jedis.getrange("key2",2,4);//获得key2的字符串
}
}
List类型
事务
package com.Test;
import com.alibaba.fastjson.JSONObject;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.Transaction;
public class TestShiwu {
public static void main(String[] args) {
//1.new 一个Jedis对象
Jedis jedis = new Jedis("127.0.0.1",6379);
//事务
JSONObject jsonObject = new JSONObject();
jsonObject.put("hello","world");
jsonObject.put("name","hjz");
//开启事务
Transaction muil =jedis.multi();
String result = jsonObject.toJSONString();
try{
muil.set("user1",result);
muil.set("user2",result);
int i=1/0;//代码抛出异常,执行失败
muil.exec();//执行事务
}catch (Exception e){
//放弃事务
muil.discard();
e.printStackTrace();
}finally {
System.out.println(jedis.get("user1"));
jedis.close();//关闭连接
}
}
}
spring boot操作数据:sprig-data jpa jdbc mongodb redis
Spring Data也是Spring Boot起名的项目
jedis:采用的是直连,多线程是不安全的,如果想要避免是不安全的,使用jedis pool 连接池!BIO
lettuce:采用netty 实例可以多个线程中共享,不存在线程不安全的情况,可以减少线程的数量,更像NIO模式
源码分析
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//
@AutoConfiguration
@ConditionalOnClass({RedisOperations.class})
@EnableConfigurationProperties({RedisProperties.class})
@Import({LettuceConnectionConfiguration.class, JedisConnectionConfiguration.class})
public class RedisAutoConfiguration {
public RedisAutoConfiguration() {
}
@Bean
@ConditionalOnMissingBean(
name = {"redisTemplate"}
)
@ConditionalOnSingleCandidate(RedisConnectionFactory.class)//不纯在才生效
public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
//默认的RedisTempalte没有过多的设置,redis都是需要序列化的
RedisTemplate<Object, Object> template = new RedisTemplate();
template.setConnectionFactory(redisConnectionFactory);
return template;
}
@Bean
@ConditionalOnMissingBean//由于String类型最常使用单独提出来一个
@ConditionalOnSingleCandidate(RedisConnectionFactory.class)
public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory redisConnectionFactory) {
return new StringRedisTemplate(redisConnectionFactory);
}
}
整合测试
配置文件、RDB、Jedis的更多相关文章
- redis基础:redis下载安装与配置,redis数据类型使用,redis常用指令,jedis使用,RDB和AOF持久化
知识点梳理 课堂讲义 课程计划 1. REDIS 入 门 (了解) (操作) 2. 数据类型 (重点) (操作) (理解) 3. 常用指令 (操作) 4. Jedis (重点) (操作) ...
- redis使用总结(二)(jedis使用)
Jedis使用(Jedis中的API和redis的指令基本相同) 1.创建maven工程,在pom文件中导入jedis的坐标 <dependency> <groupId>red ...
- [转载] 基于Redis实现分布式消息队列
转载自http://www.linuxidc.com/Linux/2015-05/117661.htm 1.为什么需要消息队列?当系统中出现“生产“和“消费“的速度或稳定性等因素不一致的时候,就需要消 ...
- Redis 基础知识点总结
关系型数据库 VS 非关系型数据库(NoSQL) 关系型数据库 我们过去使用的 mysql.Oracle 都属于关系型数据库.关系型数据库的特点是数据表之间可以存在联系,表内每列数据也存在关联,同时支 ...
- spring-data-redis --简单的用spring-data-redis
spring-data-redis序列化策略 spring-data-redis提供了多种serializer策略,这对使用jedis的开发者而言,实在是非常便捷.sdr提供了4种内置的seriali ...
- redis持久化机制【十三】
一.Redis提供了哪些持久化机制: redis的高性能是因为其所有数据都存在了内存中 ,为了使redis在重启之后数据仍然不丢失,需要将数据同步到硬盘中,这一过程就是持久化. redis支持两种方式 ...
- javaweb学习笔记(三)
一.javaweb高级(Filter和Listener)的简单介绍 1.过滤器Filter (https://www.cnblogs.com/vanl/p/5742501.html) ①定义 Filt ...
- 4、解析配置文件 redis.conf、Redis持久化RDB、Redis的主从复制
1.Units单位 配置大小单位,开头定义了一些基本的度量单位,只支持bytes,不支持bit 对大小写不敏感 2.INCLUDES包含 和我们的Struts2配置文件类似,可以通过includes包 ...
- edis.clients.jedis.exceptions.JedisDataException: MISCONF Redis is configured to save RDB snapshots,
edis.clients.jedis.exceptions.JedisDataException: MISCONF Redis is configured to save RDB snapshots ...
- redis.clients.jedis.exceptions.JedisDataException: MISCONF Redis is configured to save RDB snapshots
最近在学习Redis ,在写test测试的时候碰到这个报错: redis.clients.jedis.exceptions.JedisDataException: MISCONF Redis is c ...
随机推荐
- 基于.NET 7 的 WebTransport 实现双向通信
Web Transport 简介 WebTransport 是一个新的 Web API,使用 HTTP/3 协议来支持双向传输.它用于 Web 客户端和 HTTP/3 服务器之间的双向通信.它支持通过 ...
- 第2-4-6章 springboot整合规则引擎Drools-业务规则管理系统-组件化-中台
目录 7. Spring整合Drools 7.1 Spring简单整合Drools 7.1.1 以上代码均在drools_spring项目中 7.2 Spring整合Drools+web 7.2 以上 ...
- 数电第11周周结_by_yc
Lab7_时序逻辑验证 一.简易电子时钟 功能描述: 设计一简易电子时钟,支持时.分.秒显示,其中HEX7-HEX6显示时,HEX5-HEX4显示分,HEX1-HEX0显示秒,假设进制为:18秒= ...
- 【每日一题】【回溯backtrace】N皇后
n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击. 给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案. 每一种解法包含一个不同的 n 皇后问 ...
- Blazor组件自做十二 : Blazor Pdf Reader PDF阅读器 组件 (草稿)
原文链接 [https://www.cnblogs.com/densen2014/p/16954812.html] Blazor Pdf Reader PDF阅读器 组件 应小伙伴要求撸了一个简单的P ...
- layui table 表头抖动
原本table超出页面宽度(即table有横向滚动条)的情况下,缩放页面然后再设置定时器定时更新表单,会发现数据不变的时候table头部会左右抖动 而且th td比设置的minWidth 或者cell ...
- SQLMap入门——判断文本中的请求是否存在注入
从文件中加载HTTP请求,SQLMap可以从一个文本文件中获取HTTP请求,这样就可以不设置其他参数(如cookie.POST数据等),txt文件中的内容为Web数据包 文本文件如图(请求数据可以通过 ...
- Hadoop详解(05) – MapReduce
Hadoop详解(05) – MapReduce MapReduce概述 定义 MapReduce是一个分布式运算程序的编程框架,是用户 "基于Hadoop的数据分析应用" 开发的 ...
- 聊聊Cookie、Session、Token 背后的故事
摘要:Cookie.Session.Token 这三者是不同发展阶段的产物 本文分享自华为云社区<Cookie.Session.Token 背后的故事>,作者: 龙哥手记. 1. 网站交互 ...
- 洛谷P8508 做不完的作业【题解】
事先声明 此题解为一篇洛谷题解的详细补充,这里(我才不告诉你我这道题想了好久) 题目大意 有 \(n\) 个任务,记作 \(t\) 数组,由于主人公很懒,所以他每天都要睡觉,每一天都有 \(x\) 小 ...