一、首先介绍一下Redis

Redis是目前业界使用最广泛的内存数据存储。相比memcached,Redis支持更丰富的数据结构,例如hashes, lists, sets等,同时支持数据持久化。除此之外,Redis还提供一些类数据库的特性,比如事务,HA,主从库。可以说Redis兼具了缓存系统和数据库的一些特性,因此有着丰富的应用场景。本文介绍Redis在Spring Boot中典型的应用场景。

Redis缓存数据类型有5种,分别是String(字符串)、List(列表)、Hash(哈希)、Set(无序,不重复集合)、ZSet(sorted set:有序,不重复集合)。

二、先下载redis  我这里使用的是window64 版本

这是教程链接: http://blog.csdn.net/jinwufeiyang/article/details/52156817

Redis 下载链接 :https://github.com/MicrosoftArchive/redis/releases

双击图上的标记的 ,如成功便如图下

三、下面介绍java如何配置

这是我的项目结构

首先pom中引入jar包

org.springframework.session

spring-session-data-redis

application.properties 配置

# default-store in spring session. it will be set in redis only outside.

spring.session.store-type=none

# REDIS (RedisProperties)

# Redis数据库索引(默认为0)

spring.redis.database=0# Redis服务器地址

spring.redis.host=127.0.0.1# Redis服务器连接端口

spring.redis.port=6379# Redis服务器连接密码(默认为空)

spring.redis.password=# 连接池最大连接数(使用负值表示没有限制)

spring.redis.pool.max-active=8# 连接池最大阻塞等待时间(使用负值表示没有限制)

spring.redis.pool.max-wait=-1# 连接池中的最大空闲连接

spring.redis.pool.max-idle=8# 连接池中的最小空闲连接

spring.redis.pool.min-idle=0# 连接超时时间(毫秒)

spring.redis.timeout=0

RedisController 配置

@RestControllerpublic classRedisController {

@AutowiredprivateRedisServiceImpl service;//添加

@RequestMapping(value = "/add", method =RequestMethod.GET)public voidtest() {

System.out.println("start.....");

RedisModel m= newRedisModel();

m.setName("张三");

m.setTel("1111");

m.setAddress("深圳1");

m.setRedisKey("zhangsanKey01");

service.put(m.getRedisKey(), m,-1);

RedisModel m2= newRedisModel();

m2.setName("张三2");

m2.setTel("2222");

m2.setAddress("深圳2");

m2.setRedisKey("zhangsanKey02");

service.put(m2.getRedisKey(), m2,-1);

RedisModel m3= newRedisModel();

m3.setName("张三3");

m3.setTel("2222");

m3.setAddress("深圳2");

m3.setRedisKey("zhangsanKey03");

service.put(m3.getRedisKey(), m3,-1);

System.out.println("add success end...");

}//查询所有对象

@RequestMapping(value = "/getAll", method =RequestMethod.GET)

@ResponseBodypublicObject getAll() {returnservice.getAll();

}//查询所有key

@RequestMapping(value = "/getKeys", method =RequestMethod.GET)

@ResponseBodypublicObject getKeys() {returnservice.getKeys();

}//根据key查询

@RequestMapping(value = "/get", method =RequestMethod.GET)publicObject get(String key) {

RedisModel m= newRedisModel();

m.setRedisKey(key);returnservice.get(m.getRedisKey());

}//删除

@RequestMapping(value = "/remove", method =RequestMethod.GET)

@ResponseBodypublic voidremove() {

RedisModel m= newRedisModel();

m.setRedisKey("zhangsanKey01");

service.remove(m.getRedisKey());

}//判断key是否存在

@RequestMapping(value = "/isKeyExists", method =RequestMethod.GET)

@ResponseBodypublic voidisKeyExists() {

RedisModel m= newRedisModel();

m.setRedisKey("zhangsanKey01");boolean flag =service.isKeyExists(m.getRedisKey());

System.out.println("zhangsanKey01 是否存在: "+flag);

}//查询当前缓存的数量

@RequestMapping(value = "/count", method =RequestMethod.GET)

@ResponseBodypublicObject count() {returnservice.count();

}//清空所有key

@RequestMapping(value = "/empty", method =RequestMethod.GET)

@ResponseBodypublic voidempty() {

service.empty();

}

IRedisService 配置

public abstract class IRedisService{

@Autowiredprotected RedisTemplateredisTemplate;

@Resourceprotected HashOperationshashOperations;/*** 存入redis中的key

*

*@return

*/

protected abstractString getRedisKey();/*** 添加

*

*@paramkey key

*@paramdoamin 对象

*@paramexpire 过期时间(单位:秒),传入 -1 时表示不设置过期时间*/

public void put(String key, T doamin, longexpire) {

hashOperations.put(getRedisKey(), key, doamin);if (expire != -1) {

redisTemplate.expire(getRedisKey(), expire, TimeUnit.SECONDS);

}

}/*** 删除

*

*@paramkey 传入key的名称*/

public voidremove(String key) {

hashOperations.delete(getRedisKey(), key);

}/*** 查询

*

*@paramkey 查询的key

*@return

*/

publicT get(String key) {returnhashOperations.get(getRedisKey(), key);

}/*** 获取当前redis库下所有对象

*

*@return

*/

public ListgetAll() {returnhashOperations.values(getRedisKey());

}/*** 查询查询当前redis库下所有key

*

*@return

*/

public SetgetKeys() {returnhashOperations.keys(getRedisKey());

}/*** 判断key是否存在redis中

*

*@paramkey 传入key的名称

*@return

*/

public booleanisKeyExists(String key) {returnhashOperations.hasKey(getRedisKey(), key);

}/*** 查询当前key下缓存数量

*

*@return

*/

public longcount() {returnhashOperations.size(getRedisKey());

}/*** 清空redis*/

public voidempty() {

Set set =hashOperations.keys(getRedisKey());

set.stream().forEach(key->hashOperations.delete(getRedisKey(),key));

}

RedisServiceImpl 配置

@Servicepublic class RedisServiceImpl extends IRedisService{private static final String REDIS_KEY = "TEST_REDIS_KEY";

@OverrideprotectedString getRedisKey() {return this.REDIS_KEY;

}

}

RedisModel 配置

public class RedisModel implementsSerializable {private String redisKey;//redis中的key

private String name;//姓名

private String tel;//电话

private String address;//住址

publicString getRedisKey() {returnredisKey;

}public voidsetRedisKey(String redisKey) {this.redisKey =redisKey;

}publicString getName() {returnname;

}public voidsetName(String name) {this.name =name;

}publicString getTel() {returntel;

}public voidsetTel(String tel) {this.tel =tel;

}publicString getAddress() {returnaddress;

}public voidsetAddress(String address) {this.address =address;

}

RedisConfig配置

@Configurationpublic classRedisConfig {/*** 注入 RedisConnectionFactory*/@Autowired

RedisConnectionFactory redisConnectionFactory;/*** 实例化 RedisTemplate 对象

*

*@return

*/@Beanpublic RedisTemplatefunctionDomainRedisTemplate() {

RedisTemplate redisTemplate = new RedisTemplate<>();

initDomainRedisTemplate(redisTemplate, redisConnectionFactory);returnredisTemplate;

}/*** 设置数据存入 redis 的序列化方式

*

*@paramredisTemplate

*@paramfactory*/

private void initDomainRedisTemplate(RedisTemplateredisTemplate, RedisConnectionFactory factory) {

redisTemplate.setKeySerializer(newStringRedisSerializer());

redisTemplate.setHashKeySerializer(newStringRedisSerializer());

redisTemplate.setHashValueSerializer(newJdkSerializationRedisSerializer());

redisTemplate.setValueSerializer(newJdkSerializationRedisSerializer());

redisTemplate.setConnectionFactory(factory);

}/*** 实例化 HashOperations 对象,可以使用 Hash 类型操作

*

*@paramredisTemplate

*@return

*/@Beanpublic HashOperations hashOperations(RedisTemplateredisTemplate) {returnredisTemplate.opsForHash();

}/*** 实例化 ValueOperations 对象,可以使用 String 操作

*

*@paramredisTemplate

*@return

*/@Beanpublic ValueOperations valueOperations(RedisTemplateredisTemplate) {returnredisTemplate.opsForValue();

}/*** 实例化 ListOperations 对象,可以使用 List 操作

*

*@paramredisTemplate

*@return

*/@Beanpublic ListOperations listOperations(RedisTemplateredisTemplate) {returnredisTemplate.opsForList();

}/*** 实例化 SetOperations 对象,可以使用 Set 操作

*

*@paramredisTemplate

*@return

*/@Beanpublic SetOperations setOperations(RedisTemplateredisTemplate) {returnredisTemplate.opsForSet();

}/*** 实例化 ZSetOperations 对象,可以使用 ZSet 操作

*

*@paramredisTemplate

*@return

*/@Beanpublic ZSetOperations zSetOperations(RedisTemplateredisTemplate) {returnredisTemplate.opsForZSet();

}

Redis  实现session 共享  sessionConfig 配置

@Configuration

@EnableRedisHttpSession(maxInactiveIntervalInSeconds= 86400*30)public classSessionConfig {

}

调用方法

HttpSession session;

session.setAttribute("data", "Session 共享 9966");

String name= "端口号:9966========="+ session.getAttribute("data");

分别运行两个一样的配置 session 就共享了

源码  良心制作 :https://gitee.com/xdymemory00/FuZaiJunHeng_Redis_session-GongXiang

nginx +Redis window64 版本工具:https://gitee.com/xdymemory00/Redis_Nginx-GongJu.git

运行之后收工!!!!!!!!!!

java redis的应用_Redis-Java 交互的应用相关推荐

  1. java redis工具类_redis Java工具类详解

    redis 工具 [Java]代码 private static ShardedJedisPool sharedJedisPool; public synchronized static void i ...

  2. java redis 网络断开_Redis长时间连接后自动断开

    从日志看2小时 [DEBUG] 22:02:48.206 org.nutz.ioc.impl.NutIoc.get(NutIoc.java:151) - Get 'emailAlertService' ...

  3. java redis释放连接_redis在应用中使用连接不释放问题解决

    今天测试,发现redis使用的时候,调用的链接一直不释放.后查阅蛮多资料,才发现一个配置导致的.并不是他们说的服务没有启动导致的. 1)配置文件 #redis连接配置================= ...

  4. java redis集群操作,java操作redis3.0集群

    java(JedisCluster)操作redis集群 这里只是几个简单的demo,直接上代码吧,没啥好说的 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ...

  5. java redis缓存使用_redis缓存在项目中的使用

    关于redis为什么能作为缓存这个问题我们就不说了,直接来说一下redis缓存到底如何在项目中使用吧: 1.redis缓存如何在项目中配置? 1.1redis缓存单机版和集群版配置?(redis的客户 ...

  6. java redis事务机制_Redis 事务机制

    Redis 事务:可以一次执行多个命令,本质是一组命令的集合.一个事务中的所有命令都会序列化,按顺序串行化执行而不会被其它命令插入,一次性.顺序性.排他性的执行一系列命令. 一.常用命令 [1] :开 ...

  7. java redis 主从 哨兵_Redis主从复制与哨兵机制

    Redis主从复制 1.redis的复制功能是支持多个数据库之间的数据同步.一类是主数据库(master)一类是从数据库(slave),主数据库可以进行读写操作,当发生写操作的时候自动将数据同步到从数 ...

  8. java redis 主从配置_Redis实现主从复制(MasterSlave)

    Redis实现主从复制(Master&Slave) Redis主从复制 1.是什么 1.单机有什么问题: 单机故障 容量瓶颈 qps瓶颈 主机数据更新后根据配置和策略,自动同步到备机的mast ...

  9. java redis 商品秒杀_redis编写lua脚本实现商品秒杀

    编写lua脚本 --是否秒杀 local hasBuy = redis.call('sismember',KEYS[1],ARGV[1]) if hasBuy~=0 then return 0; en ...

  10. java redis模糊查询_Redis模糊查询

    最近使用Redis优化项目功能,其中有一部分为模糊查询,找了很多帖子,也没有找到很好的解决方案和思路,最终皇天不负有心人啊,终于让我找到了!!! 可以通过Redis中keys命令进行获取key值,具体 ...

最新文章

  1. ubuntu12.04默认gcc4.6.3,如何升级到gcc4.8
  2. 和初学者谈谈如何学好单片机编程技术
  3. 深度学习之循环神经网络(2)循环神经网络原理
  4. ZZULIOJ 1105: 判断友好数对(函数专题)
  5. mysql定时任务 分钟_mysql定时任务
  6. 陶哲轩实分析 命题 7.3.4 (Cauchy 准则) 证明
  7. 字节跳动联邦学习平台通过中国信通院首批评估 数据安全能力得到专业验证
  8. Android使用BaseAdapter绑定ListView实现不同item的TextView多种文字变色
  9. axure6.5汉化最新正式破解版本下载(有注册码)
  10. Object对象转JSON字符串
  11. 今天是本学期的第几周的第几天? (15 分) C语言
  12. 离散数学——基础推理
  13. edge保存页面html,Edge浏览器怎么保存网页 保存网页方法一览
  14. plc的毕业设计冷门题目_PLC毕业设计----PLC毕业设计题目汇总
  15. 判断是不是数字 Java_java如何判断是不是数字
  16. Golang使用mgo.v2包操作MongoDB的基础示例
  17. git常用命令和基本操作
  18. stm32学习笔记——通用计时器基本原理
  19. xshell4连接ubuntu,报错No matching outgoing encryption
  20. 人工智能中的认识导航技术

热门文章

  1. js中使用slice进行补0日期和时间
  2. polkit启动失败_linux某服务启动失败,提示Authorization not available. Check if polkit...问题解决...
  3. android studio 本地html,android - 从当前HTML文件Android Studio中打开本地HTML文件? - 堆栈内存溢出...
  4. java 自定义登录态_java – 自定义HTTP状态代码
  5. mysql临时关闭查询日志_mysql故障排错临时打开通用日志和慢查询日志
  6. Android属性动画赏析,Android源码分析—属性动画的工作原理
  7. 玩转springboot2.x之自定义项目内自动配置
  8. Oracle(五)PL/SQL编程语言
  9. Android App优化之提升你的App启动速度之实例挑战
  10. python入门第八章 商品数量检测 头像格式检测