前序:

默认使用SimpleCacheConfiguration 组件
ConcurrentMapCacheManager==ConcurrentMapCache
将数据保存在ConcurrentMap<Object,Object> 中

开发中使用缓存中间件:
redis , memcache ,ehcache

安装redis流程:

1.安装redis ,使用docker
docker命令:

docker pull redis


docker images


docker run -d -p 6379:6379 --name myredis docker.io/redis


2.引入redis的starter
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency> 3.配置redis
spring.redis.host=192.168.0.133

配置完成后Redis客户端console测试:

String测试:
append msg hello
插入key为msg,value为hello
append msg world
msg的值变为 helloworld
get msg
获得msg的值 list测试:
lpush mylist 1 2 3 4 5
从左边往里面插入
那么值就是 5 4 3 2 1
lpop mylist
弹出左边的5 值为 4 3 2 1
rpop mylist
弹出右边的1 值为 4 3 2 set测试:
sadd myset zhangsan lisi
增加一个set集合(无序)不可重复
sadd myset lisi
返回0 因为已经存在
smembers myset
查看myset 集合里面的值
sismember myset wangwu
判断myset集合里面是否存在wangwu 元素 如果有返回1 没有返回0

代码测试:

@Autowired
RedisTemplate redisTemplate; //操作k-v都是对象的 @Autowired
StringRedisTemplate stringRedisTemplate;//操作字符串用 @Autowired
RedisTemplate<Object,Employee> empRedisTemplate;
/*
* String,List(列表),Set(集合),Hash(散列),ZSet(有序集合)
* stringRedisTemplate.opsForValue() 【操作string字符串的】
* stringRedisTemplate.opsForList()
* stringRedisTemplate.opsForSet()
* stringRedisTemplate.opsForHash()
* stringRedisTemplate.opsForZSet()
*/
@Test
public void redisTest01(){
//给redis中添加数据
//stringRedisTemplate.opsForValue().append("msg","hello");
// String ss= stringRedisTemplate.opsForValue().get("msg");
// System.out.println(ss); stringRedisTemplate.opsForList().leftPush("mylist","1");
stringRedisTemplate.opsForList().leftPush("mylist","2");
stringRedisTemplate.opsForList().leftPush("mylist","3");
} //保存对象测试
@Test
public void redisTest02(){
Employee emp = employeeMapper.getEmpById(1);
//默认如果保存对象使用gdk,使用jdk序列化机制,序列化后的数据保存到redis中
//redisTemplate.opsForValue().set("emp",emp);
//解决方法:
// 1.把对象转为json
// 2.根据redisTemplate默认得序列话规则为gdk,重新配置新的RedisTemplate改变其序列化规则
empRedisTemplate.opsForValue().set("emp-1",emp); } @Autowired
EmployeeMapper employeeMapper;
@Test
public void contextLoads() {
Employee emp = employeeMapper.getEmpById(1);
System.out.println(emp.toString());
}
插入redis值乱码,重新配置新的RedisTemplate改变其序列化规则方法:
思路:
1.redis starter 引入后 ,在RedisAutoConfiguration类中有两个加入容器的方法

2.类实现序列化
public class Employee implements Serializable
3.按照其格式,重写RedisTemplate方法,并且加入容器中。

@Configuration
public class MyRedisConfig { @Bean
public RedisTemplate<Object, Employee> empRedisTemplate(RedisConnectionFactory redisConnectionFactory) throws UnknownHostException {
RedisTemplate<Object, Employee> template = new RedisTemplate();
template.setConnectionFactory(redisConnectionFactory);
Jackson2JsonRedisSerializer<Employee> ser = new Jackson2JsonRedisSerializer<Employee>(Employee.class);
template.setDefaultSerializer(ser);
return template;
}
}
setDefaultSerializer()方法:

redis缓存中间件基础的更多相关文章

  1. Redis缓存数据库基础

    思维导图xmind文件:https://files-cdn.cnblogs.com/files/benjieming/Redis.zip

  2. 老司机带你玩转面试(1):缓存中间件 Redis 基础知识以及数据持久化

    引言 今天周末,我在家坐着掐指一算,马上又要到一年一度的金九银十招聘季了,国内今年上半年受到 YQ 冲击,金三银四泡汤了,这就直接导致很多今年毕业的同学会和明年毕业的同学一起参加今年下半年的秋招,这个 ...

  3. 缓存中间件-Redis(一)

    1.Redis介绍 REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的 key-value 存储系统,是跨平台的非关系型数据库,Red ...

  4. 使用方法拦截机制在不修改原逻辑基础上为 spring MVC 工程添加 Redis 缓存

    首先,相关文件:链接: https://pan.baidu.com/s/1H-D2M4RfXWnKzNLmsbqiQQ 密码: 5dzk 文件说明: redis-2.4.5-win32-win64.z ...

  5. .net 分布式架构之分布式缓存中间件

    开源git地址: http://git.oschina.net/chejiangyi/XXF.BaseService.DistributedCache 分布式缓存中间件  方便实现缓存的分布式,集群, ...

  6. Redis缓存和MySQL数据一致性方案(转)

    需求起因 在高并发的业务场景下,数据库大多数情况都是用户并发访问最薄弱的环节.所以,就需要使用redis做一个缓冲操作,让请求先访问到redis,而不是直接访问MySQL等数据库. 这个业务场景,主要 ...

  7. 面试官:你对Redis缓存了解吗?面对这11道面试题你是否有很多问号?

    前言 关于Redis的知识,总结了一个脑图分享给大家 1.在项目中缓存是如何使用的?为什么要用缓存?缓存使用不当会造成什么后果? 面试官心理分析 这个问题,互联网公司必问,要是一个人连缓存都不太清楚, ...

  8. 一文读懂Apache Geode缓存中间件

    目录 一.对缓存中间件的诉求 1.1 我们为什么需要缓存中间件 1.2 缓存的分类 1.1.1 弱势缓存 1.1.2 强势缓存 二.什么是Apache Geode 2.1 Apache Geode的架 ...

  9. Windows下Redis缓存服务器的使用 .NET StackExchange.Redis Redis Desktop Manager

    Redis缓存服务器是一款key/value数据库,读110000次/s,写81000次/s,因为是内存操作所以速度飞快,常见用法是存用户token.短信验证码等 官网显示Redis本身并没有Wind ...

随机推荐

  1. Scala简介、安装、函数、面向对象

    Scala是一门以java虚拟机(JVM)为目标运行环境并将面向对象和函数式编程的最佳特性结合在一起的静态类型编程语言. scala命令行窗口,我们称之为REPL,是指:Read->Evalua ...

  2. Kinetis Design Studio 下使用J-Link下载程序

    1.安装J-Link驱动. 在KDS安装目录下已自带J-Link驱动,进入以下目录(以我的为例): C:\Freescale\KDS_1.1.1\segger\USBDriver 将看到CDC.x64 ...

  3. eslint的安装与使用

    什么是 ESLint ESLint(中文站点)是一个开源的 JavaScript 代码检查工具,使用 Node.js 编写,由 Nicholas C. Zakas 于 2013 年 6 月创建.ESL ...

  4. 279. Perfect Squares(动态规划)

    Given a positive integer n, find the least number of perfect square numbers (for example, 1, 4, 9, 1 ...

  5. meterpreter 持久后门

    创建持久后门 当成功获取目标系统的访问权限后,需要寻找方法来恢复与目标主机的连接,而无需再进入目标系统.如果目标用户破坏了该连接,例如重新启动计算机,此时使用后门将允许自动重新与目标系统建立连接.为了 ...

  6. 佳佳的Fibonacci

    #include<cstdio> #include<cstring> #include<iostream> #include<cmath> #inclu ...

  7. 04-python3.5-模拟三级菜单-省-县-区域--01

    #!/usr/bin/env python # -*- coding:utf-8 -*- #Author:XZ data = { '北京':{ "昌平":{ "沙河&qu ...

  8. Qt3D 5.9 and future

    2017-05 http://blog.qt.io/blog/2017/05/24/qt3d/ Qt3D future 5.9 Use Qt Quick or QPainter to render i ...

  9. FileFilter过滤器

    FileFilter过滤器原理: File对象的listFiles()方法做了三件事情: 第一件,遍历得到所有的文件/文件夹: 第二件,调用入参过滤器接口自己DIY的实现类中重写的accept()方法 ...

  10. 2018-2019-2 20165215《网络对抗技术》Exp4 恶意代码分析

    目录 实践目标 实践内容 基础问题回答 实验步骤 使用schtasks指令监控系统 使用sysmon工具监控系统 使用VirusTotal分析恶意软件 使用PEiD进行外壳检测 使用PE explor ...