前序:

默认使用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. linux----------centos下添加环境变量

    1.添加PHP的环境变量.如图操作 其中在 /etc/profile里面编辑的内容是:只加了这一行,箭头所指的那一行. 2.需要添加其他环境变量就在后面用 :追加 PATH=$PATH:/usr/lo ...

  2. 递归算法+sql三种分页

    using Maticsoft.Common; using System; using System.Collections.Generic; using System.Data; using Sys ...

  3. Delphi调用API函数获取Windows目录信息、获取System目录信息、获取Temp临时文件目录信息

    var Str1, Str2: Array[..Max_Path]of Char;//开辟缓冲区 Str3: Array[..]of Char; begin GetWindowsDirectory(@ ...

  4. # 2017-2018-2 20155228 《信息安全系统设计原理》 使用VirtualStudio2008创建和调用静态库和使用VirtualC++6.0创建和调用动态库

    使用virtual c++ 6.0创建和调用动态库 不得不说一下关于环境的问题 只要我打一个响指,一半的安装在win7上的VC6.0都会因为兼容性问题直接崩掉 懒得研究怎么解决兼容性的问题了,直接开一 ...

  5. h5页面实战——与andriod和ios的交互

    首先需要我们h5页面需要做一些匹配.比如:如何判断当前手机是andriod还是ios, andriod攻城狮和ios工程师,一般会定义事件的方法.我们套用他们方法就可以了. 那么为什么我要写这个随笔呢 ...

  6. java 类、方法、代码块修饰式关键字总结

    super 关键字 this和super的区别 访问成员的区别 this关键字 this特点 this使用场景 static关键字 例子 访问权限修饰符 特点 总结: 四个修饰符的特点 访问权限修饰符 ...

  7. 安卓GridView奇偶行不同颜色

    背景:安卓制作表格,两列多行,奇数行和偶数行背景色不同 分析:GridView是经常用来制作表格的,但是和ListView不同,不能简单的用position % 2 == 0/1 来判断奇偶行,下面提 ...

  8. bloc控制读写文件

    import 'package:flutter/material.dart'; import 'dart:io'; import 'package:path_provider/path_provide ...

  9. Python Iterables Iterators Generators

    container 某些对象包含其它对象的引用,这个包含其它对象引用的对象叫容器.例如list可以包含int对象,或者由其它数据类型(或数据结构)的对象组成一个list. 对其他对象的引用是容器值的一 ...

  10. HDFS配置参数及优化之实战经验(Linux hdfs)

    HDFS优化之实战经验 Linux系统优化 一.禁止文件系统记录时间 Linux文件系统会记录文件创建.修改和访问操作的时间信息,这在读写操作频繁的应用中将带来不小的性能损失.在挂载文件系统时设置no ...