Spring Data Redis
时间:2022-05-03
本文章向大家介绍Spring Data Redis,主要内容包括11.6. Spring Data、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
11.6. Spring Data
11.6.1. Redis
11.6.1.1. pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-redis</artifactId>
</dependency>
11.6.1.2. springframework-servlet.xml
<!-- Redis Connection Factory -->
<bean id="jedisConnFactory"
class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"
p:host-name="192.168.2.1" p:port="6379" p:use-pool="true" />
<!-- redis template definition -->
<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate"
p:connection-factory-ref="jedisConnFactory" />
例 11.2. Spring Data Redis Example
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<mvc:resources location="/images/" mapping="/images/**" />
<mvc:resources location="/css/" mapping="/css/**" />
<context:component-scan base-package="cn.netkiller.controller" />
<mvc:annotation-driven />
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
<!-- <property name="viewNames" value="*.jsp" /> -->
</bean>
<bean id="configuracion"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:resources/development.properties" />
</bean>
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
</bean>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="cn.netkiller.mapper" />
</bean>
<bean id="userService" class="cn.netkiller.service.UserService">
</bean>
<!-- Redis Connection Factory -->
<bean id="jedisConnFactory"
class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"
p:host-name="192.168.2.1" p:port="6379" p:use-pool="true" />
<!-- redis template definition -->
<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate"
p:connection-factory-ref="jedisConnFactory" />
</beans>
11.6.1.3. Controller
package cn.netkiller.controller;
import javax.annotation.Resource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.ListOperations;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.StringRedisSerializer;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import cn.netkiller.model.User;
@Controller
public class CacheController {
// inject the actual template
@Autowired
private RedisTemplate<String, String> template;
// inject the template as ListOperations
@Resource(name = "redisTemplate")
private ListOperations<String, String> listOps;
@RequestMapping("/cache")
public ModelAndView cache() {
String message = "";
User user = new User();
user.setId("1");
user.setName("Neo");
user.setAge(30);
String key = "user";
listOps.leftPush(key, user.toString());
message = listOps.leftPop(key);
template.setKeySerializer(new StringRedisSerializer());
template.setValueSerializer(new StringRedisSerializer());
template.opsForValue().set("key", user.toString());
return new ModelAndView("index/index", "variable", message);
}
}
11.6.1.4. index.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<br>
<div style="text-align:center">
<h2>
${variable}
</h2>
</div>
</body>
</html>
11.6.1.5. 测试
请求URL http://your.domain.com/your.html
[root@master ~]# redis-cli
redis 127.0.0.1:6379> keys *
1) "xacxedx00x05tx00x04user"
2) "key"
redis 127.0.0.1:6379> get key
"xacxedx00x05tx00x1dUser [id=1, name=Neo, age=30]"
- React Native之打包
- React语法基础之JSX
- React 介绍及实践教程
- ios入门之界面基础
- 技术分享 | 深入分析APPCMS<=2.0.101 sql注入漏洞
- React Native布局之FlexBox
- 图算法之bfs、dfs、prim、Dijkstra
- 深入理解Android Build系统
- Mac Jenkins搭建 Android/IOS自动打包环境
- javascript 红皮高程(11)
- javascript 红皮高程(8)
- javascript 红皮高程(7)
- javascript 红皮高程(17)-- 左移(<<)
- javascript 红皮高程(17)-- 按位异或(XOR)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 聊聊flink 1.11 中的随机数据生成器-DataGen connector
- flink实战教程-集群的部署
- Flink实战教程-自定义函数之标量函数
- Flink实战教程-自定义函数之TableFunction
- Flink教程-flink 1.11 流式数据ORC格式写入file
- Flink教程-使用sql将流式数据写入文件系统
- flink教程-flink 1.11 集成zeppelin实现简易实时计算平台
- flink教程-详解flink 1.11 中的CDC (Change Data Capture)
- flink教程-基于flink 1.11 使 sql客户端支持执行sql文件
- flink教程-详解flink 1.11 中的JDBC Catalog
- flink教程-flink modules详解之使用hive函数
- 面试iOS 机会在自己手中
- Flink教程-将流式数据写入redis
- Flink教程-keyby 窗口数据倾斜的优化
- Flink源码分析之深度解读流式数据写入hive