- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章springmvc集成使用redis过程由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
首先安装redis。这个就不重点介绍了。windos下载redis就行.
我用的是mac 。
用命令行安装的.
安装命令 。
1
|
yum install redis
|
运行命令 。
1
|
sudo redis-server
|
这样就安装运行成功了.
首先你需要下载驱动包,下载 jedis.jar,确保下载最新驱动包。然后导包.
在spring配置文件里我这是ApplicationContext .xml文件添加 。
1
2
|
<!-- 引入同文件夹下的redis属性配置文件 -->
<
import
resource
=
"spring-redis.xml"
/>
|
然后用创建spring-redis.xml文件 。
写入 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
<
beans
xmlns
=
"http://www.springframework.org/schema/beans"
xmlns:xsi
=
"http://www.w3.org/2001/XMLSchema-instance"
xmlns:context
=
"http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 缓存的层级-->
<
context:component-scan
base-package
=
"com.niit.cache"
/>
<!-- 引入redis配置 -->
<
context:property-placeholder
location
=
"/WEB-INF/classes/redis.properties"
ignore-unresolvable
=
"true"
/>
<!-- Redis 配置 -->
<
bean
id
=
"jedisPoolConfig"
class
=
"redis.clients.jedis.JedisPoolConfig"
>
<
property
name
=
"maxTotal"
value
=
"${redis.pool.maxTotal}"
/>
<
property
name
=
"maxIdle"
value
=
"${redis.pool.maxIdle}"
/>
<
property
name
=
"maxWaitMillis"
value
=
"${redis.pool.maxWaitMillis}"
/>
<
property
name
=
"testOnBorrow"
value
=
"${redis.pool.testOnBorrow}"
/>
</
bean
>
<!-- JedisCluster 集群高可用配置 -->
<!--<bean id="jedisCluster" class="redis.clients.jedis.JedisCluster">
<constructor-arg index="0">
<set>
<bean class="redis.clients.jedis.HostAndPort">
<constructor-arg index="0" value="${redis.ip1}" />
<constructor-arg index="1" value="${redis.port1}" type="int" />
</bean>
<bean class="redis.clients.jedis.HostAndPort">
<constructor-arg index="0" value="${redis.ip2}" />
<constructor-arg index="1" value="${redis.port2}" type="int" />
</bean>
<bean class="redis.clients.jedis.HostAndPort">
<constructor-arg index="0" value="${redis.ip3}" />
<constructor-arg index="1" value="${redis.port3}" type="int" />
</bean>
<bean class="redis.clients.jedis.HostAndPort">
<constructor-arg index="0" value="${redis.ip4}" />
<constructor-arg index="1" value="${redis.port4}" type="int" />
</bean>
<bean class="redis.clients.jedis.HostAndPort">
<constructor-arg index="0" value="${redis.ip5}" />
<constructor-arg index="1" value="${redis.port5}" type="int" />
</bean>
<bean class="redis.clients.jedis.HostAndPort">
<constructor-arg index="0" value="${redis.ip6}" />
<constructor-arg index="1" value="${redis.port6}" type="int" />
</bean>
</set>
</constructor-arg>
<constructor-arg index="1" value="2000" type="int"></constructor-arg>
<constructor-arg index="2" value="100" type="int"></constructor-arg>
<constructor-arg index="3" ref="jedisPoolConfig"></constructor-arg>
</bean>-->
<!--redis Sentinel主从高可用方案配置 -->
<!-- <bean id="sentinelConfiguration" class="org.springframework.data.redis.connection.RedisSentinelConfiguration">
<property name="master">
<bean class="org.springframework.data.redis.connection.RedisNode">
<property name="name" value="master-1"></property>
</bean>
</property>
<property name="sentinels">
<set>
<bean class="org.springframework.data.redis.connection.RedisNode">
<constructor-arg name="host" value="${sentinel1.ip}"></constructor-arg>
<constructor-arg name="port" value="${sentinel1.port}"></constructor-arg>
</bean>
<bean class="org.springframework.data.redis.connection.RedisNode">
<constructor-arg name="host" value="${sentinel2.ip}"></constructor-arg>
<constructor-arg name="port" value="${sentinel2.port}"></constructor-arg>
</bean>
<bean class="org.springframework.data.redis.connection.RedisNode">
<constructor-arg name="host" value="${sentinel3.ip}"></constructor-arg>
<constructor-arg name="port" value="${sentinel3.port}"></constructor-arg>
</bean>
</set>
</property>
</bean>
<bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" p:use-pool="true">
<property name="password" value="${redis.pass}" />
<property name="poolConfig">
<ref bean="jedisPoolConfig" />
</property>
<constructor-arg name="sentinelConfig" ref="sentinelConfiguration" />
</bean> -->
<!-- redis单节点数据库连接配置 -->
<
bean
id
=
"jedisConnectionFactory"
class
=
"org.springframework.data.redis.connection.jedis.JedisConnectionFactory"
>
<
property
name
=
"hostName"
value
=
"${redis.ip}"
/>
<
property
name
=
"port"
value
=
"${redis.port}"
/>
<
property
name
=
"password"
value
=
"${redis.pass}"
/>
<
property
name
=
"poolConfig"
ref
=
"jedisPoolConfig"
/>
</
bean
>
<!-- redisTemplate配置,redisTemplate是对Jedis的对redis操作的扩展,有更多的操作,封装使操作更便捷 -->
<
bean
id
=
"redisTemplate"
class
=
"org.springframework.data.redis.core.StringRedisTemplate"
>
<
property
name
=
"connectionFactory"
ref
=
"jedisConnectionFactory"
/>
</
bean
>
</
beans
>
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
|
public
class
RedisCache {
public
final
static
String CAHCENAME =
"niitcache"
;
// 缓存名
public
final
static
int
CAHCETIME =
60
;
// 默认缓存时间 60S
public
final
static
int
CAHCEHOUR =
60
*
60
;
// 默认缓存时间 1hr
public
final
static
int
CAHCEDAY =
60
*
60
*
24
;
// 默认缓存时间 1Day
public
final
static
int
CAHCEWEEK =
60
*
60
*
24
*
7
;
// 默认缓存时间 1week
public
final
static
int
CAHCEMONTH =
60
*
60
*
24
*
7
*
30
;
// 默认缓存时间 1month
@Autowired
private
RedisTemplate<String, String> redisTemplate;
public
<T>
boolean
putCache(String key, T obj) {
final
byte
[] bkey = key.getBytes();
final
byte
[] bvalue = ProtoStuffSerializerUtil.serialize(obj);
boolean
result = redisTemplate.execute(
new
RedisCallback<Boolean>() {
@Override
public
Boolean doInRedis(RedisConnection connection)
throws
DataAccessException {
return
connection.setNX(bkey, bvalue);
}
});
return
result;
}
public
<T>
void
putCacheWithExpireTime(String key, T obj,
final
long
expireTime) {
final
byte
[] bkey = key.getBytes();
final
byte
[] bvalue = ProtoStuffSerializerUtil.serialize(obj);
redisTemplate.execute(
new
RedisCallback<Boolean>() {
@Override
public
Boolean doInRedis(RedisConnection connection)
throws
DataAccessException {
connection.setEx(bkey, expireTime, bvalue);
return
true
;
}
});
}
public
<T>
boolean
putListCache(String key, List<T> objList) {
final
byte
[] bkey = key.getBytes();
final
byte
[] bvalue = ProtoStuffSerializerUtil.serializeList(objList);
boolean
result = redisTemplate.execute(
new
RedisCallback<Boolean>() {
@Override
public
Boolean doInRedis(RedisConnection connection)
throws
DataAccessException {
return
connection.setNX(bkey, bvalue);
}
});
return
result;
}
public
<T>
boolean
putListCacheWithExpireTime(String key, List<T> objList,
final
long
expireTime) {
final
byte
[] bkey = key.getBytes();
final
byte
[] bvalue = ProtoStuffSerializerUtil.serializeList(objList);
boolean
result = redisTemplate.execute(
new
RedisCallback<Boolean>() {
@Override
public
Boolean doInRedis(RedisConnection connection)
throws
DataAccessException {
connection.setEx(bkey, expireTime, bvalue);
return
true
;
}
});
return
result;
}
public
<T> T getCache(
final
String key, Class<T> targetClass) {
byte
[] result = redisTemplate.execute(
new
RedisCallback<
byte
[]>() {
@Override
public
byte
[] doInRedis(RedisConnection connection)
throws
DataAccessException {
return
connection.get(key.getBytes());
}
});
if
(result ==
null
) {
return
null
;
}
return
ProtoStuffSerializerUtil.deserialize(result, targetClass);
}
public
<T> List<T> getListCache(
final
String key, Class<T> targetClass) {
byte
[] result = redisTemplate.execute(
new
RedisCallback<
byte
[]>() {
@Override
public
byte
[] doInRedis(RedisConnection connection)
throws
DataAccessException {
return
connection.get(key.getBytes());
}
});
if
(result ==
null
) {
return
null
;
}
return
ProtoStuffSerializerUtil.deserializeList(result, targetClass);
}
/**
* 精确删除key
*
* @param key
*/
public
void
deleteCache(String key) {
redisTemplate.delete(key);
}
/**
* 模糊删除key
*
* @param pattern
*/
public
void
deleteCacheWithPattern(String pattern) {
Set<String> keys = redisTemplate.keys(pattern);
redisTemplate.delete(keys);
}
/**
* 清空所有缓存
*/
public
void
clearCache() {
deleteCacheWithPattern(RedisCache.CAHCENAME +
"|*"
);
}
}
|
创建redis的配置文件 redis.properties.
写入 。
1
2
3
4
5
6
7
8
9
|
#redis config
redis.pass=
redis.pool.maxTotal=
105
redis.pool.maxIdle=
10
redis.pool.maxWaitMillis=
5000
redis.pool.testOnBorrow=
true
redis.ip=
127.0
.
0.1
redis.port=
6379
|
这些根据自己的需求自定义配置就好了 。
这样redis就继承好了 。
创建一个redisCache类 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
import
org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.dao.DataAccessException;
import
org.springframework.data.redis.connection.RedisConnection;
import
org.springframework.data.redis.core.RedisCallback;
import
org.springframework.data.redis.core.RedisTemplate;
import
org.springframework.stereotype.Component;
import
com.niit.util.ProtoStuffSerializerUtil;
import
java.util.List;
import
java.util.Set;
/**
* redis缓存
*
* @author James
*
*/
@Component
public
class
RedisCache {
public
final
static
String CAHCENAME =
"niitcache"
;
// 缓存名
public
final
static
int
CAHCETIME =
60
;
// 默认缓存时间 60S
public
final
static
int
CAHCEHOUR =
60
*
60
;
// 默认缓存时间 1hr
public
final
static
int
CAHCEDAY =
60
*
60
*
24
;
// 默认缓存时间 1Day
public
final
static
int
CAHCEWEEK =
60
*
60
*
24
*
7
;
// 默认缓存时间 1week
public
final
static
int
CAHCEMONTH =
60
*
60
*
24
*
7
*
30
;
// 默认缓存时间 1month
@Autowired
private
RedisTemplate<String, String> redisTemplate;
public
<T>
boolean
putCache(String key, T obj) {
final
byte
[] bkey = key.getBytes();
final
byte
[] bvalue = ProtoStuffSerializerUtil.serialize(obj);
boolean
result = redisTemplate.execute(
new
RedisCallback<Boolean>() {
@Override
public
Boolean doInRedis(RedisConnection connection)
throws
DataAccessException {
return
connection.setNX(bkey, bvalue);
}
});
return
result;
}
public
<T>
void
putCacheWithExpireTime(String key, T obj,
final
long
expireTime) {
final
byte
[] bkey = key.getBytes();
final
byte
[] bvalue = ProtoStuffSerializerUtil.serialize(obj);
redisTemplate.execute(
new
RedisCallback<Boolean>() {
@Override
public
Boolean doInRedis(RedisConnection connection)
throws
DataAccessException {
connection.setEx(bkey, expireTime, bvalue);
return
true
;
}
});
}
public
<T>
boolean
putListCache(String key, List<T> objList) {
final
byte
[] bkey = key.getBytes();
final
byte
[] bvalue = ProtoStuffSerializerUtil.serializeList(objList);
boolean
result = redisTemplate.execute(
new
RedisCallback<Boolean>() {
@Override
public
Boolean doInRedis(RedisConnection connection)
throws
DataAccessException {
return
connection.setNX(bkey, bvalue);
}
});
return
result;
}
public
<T>
boolean
putListCacheWithExpireTime(String key, List<T> objList,
final
long
expireTime) {
final
byte
[] bkey = key.getBytes();
final
byte
[] bvalue = ProtoStuffSerializerUtil.serializeList(objList);
boolean
result = redisTemplate.execute(
new
RedisCallback<Boolean>() {
@Override
public
Boolean doInRedis(RedisConnection connection)
throws
DataAccessException {
connection.setEx(bkey, expireTime, bvalue);
return
true
;
}
});
return
result;
}
public
<T> T getCache(
final
String key, Class<T> targetClass) {
byte
[] result = redisTemplate.execute(
new
RedisCallback<
byte
[]>() {
@Override
public
byte
[] doInRedis(RedisConnection connection)
throws
DataAccessException {
return
connection.get(key.getBytes());
}
});
if
(result ==
null
) {
return
null
;
}
return
ProtoStuffSerializerUtil.deserialize(result, targetClass);
}
public
<T> List<T> getListCache(
final
String key, Class<T> targetClass) {
byte
[] result = redisTemplate.execute(
new
RedisCallback<
byte
[]>() {
@Override
public
byte
[] doInRedis(RedisConnection connection)
throws
DataAccessException {
return
connection.get(key.getBytes());
}
});
if
(result ==
null
) {
return
null
;
}
return
ProtoStuffSerializerUtil.deserializeList(result, targetClass);
}
/**
* 精确删除key
*
* @param key
*/
public
void
deleteCache(String key) {
redisTemplate.delete(key);
}
/**
* 模糊删除key
*
* @param pattern
*/
public
void
deleteCacheWithPattern(String pattern) {
Set<String> keys = redisTemplate.keys(pattern);
redisTemplate.delete(keys);
}
/**
* 清空所有缓存
*/
public
void
clearCache() {
deleteCacheWithPattern(RedisCache.CAHCENAME +
"|*"
);
}
}
|
1
2
3
4
|
<span style=
"white-space:pre"
> </span>String v =
"test"
;
cache.putCacheWithExpireTime(
"key"
, v, cache.CAHCEHOUR);
String value = cache.getCache(
"key"
, String.
class
);
System.out.println(value);
|
然后集成成功。redis是将数据放进内存里。所以需要考虑做redis服务器时候的内存性能,还有redis的缓存策略等等.
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我.
原文链接:https://blog.csdn.net/qq_24046745/article/details/52702261 。
最后此篇关于springmvc集成使用redis过程的文章就讲到这里了,如果你想了解更多关于springmvc集成使用redis过程的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
Windows 集成 (NTLM) 身份验证和 Windows 集成 (Kerberos) 之间有什么区别? 如何在IIS6中实现这些 w.r.t. MSDN 最佳答案 Kerberos 和 NTLM
Keycloak是一个用 Java 编写的开源身份验证和身份管理解决方案。它提供了一个nodejs适配器,使用它我能够成功地与express集成。这是有效的路由文件: 'use strict'
这是我关于 Bamboo 的第二个问题 ( My First One )。阅读建议信息后我的理解是,我需要一个构建工具,例如 nAnt 或 MSbuild 来编写一个获取源代码并构建它的脚本(我正在开
可用于将第三方应用程序与 jira 4.3 集成的身份验证方案有哪些?显然,从客户那里获取用户名和密码听起来很荒谬。另外,我知道 oauth 身份验证仅适用于版本 5。请告诉我。谢谢。 附注。我不是在
我有一个使用 DDS 的旧版 C++ 应用程序用于异步通信/消息传递。我需要将此应用程序集成到使用 JMS 进行消息传递的 JavaEE 环境中。除了构建独立的 JMS/DDS 桥接模块之外,我还有其
我正在尝试使用 Whatsapp 发送测试消息,但收到此错误消息: "error":{"code":27,"description":"Recipient not available on chann
我想将 photologue 与我的 Django 应用程序集成,并使用它在车辆库存中显示照片......有点像 Boost Motor Group Inc. 提供的内容。我已经集成了该应用程序,所以
我目前正在尝试弄清楚如何与 fujitsu scansnap 扫描仪集成,但没有从 fujitsu 找到有关 fujitsu scansnap 管理器如何调用您的应用程序并将文件发送到您的应用程序的详
在我的项目中,我使用了 9 个(九个)int-ip:udp-inbound-channel-adapter 和一个 jms:inbound-channel-adapter。 Jms 适配器从服务器接收
在我们当前的原型(prototype)中,大多数标准 HTML 控件都被小程序取代,最重要的是表单提交由小程序触发。 有没有一种方法可以像 一样在服务器端调用关联的操作 ? 本文Applet and
是否可以使用 twilio 号码从 whatsapp 发送/接收短信?有人用whatsapp试过twilio吗?我问过客服,如果可能的话,他说,不确定,但很多人都问过这个问题。 最佳答案 万一其他人来
我们办公室中几乎不存在版本控制,这显然导致了很多麻烦。我们想使用SVN和Notepad++进行设置...任何人都对如何实现此目标有任何想法?我已经开始研究并浏览了这个网站: http://www.sw
曾经有提供这种集成的 spring-modules 项目;但是,该项目现已弃用。现在有没有人继续支持这种集成?谢谢。 最佳答案 工作正在进行中。 http://blog.athico.com/sear
我的理解是,根据 http://wiki.dbpedia.org/Datasets,DBpedia 从 YAGO 获取类层次结构,而不是实体。 .但是,类似 http://dbpedia.org/cl
任何人都可以帮助我如何将 OpenCMS 与 Java Spring Web 应用程序集成。已经用谷歌搜索并浏览了很多网站但没有用。所以,请帮助我。 最佳答案 我认为将 SpringMVC 与 Ope
我正在尝试使用新的 migs getaway (MPGS) 我遵循了下一个 url 中的代码 https://ap-gateway.mastercard.com/api/documentation/i
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 4年前关闭。 Improve thi
我有一个 cmake 项目。我想轻松完成以下操作 搜索光标下任何变量、函数等的声明、定义和引用,这些可能在外部头文件中声明,其路径是在CMakeLists.txt中使用INCLUDE_DIRECTOR
有人能给我指点一下 Objective-C(或 c/c++)库的方向,或者教通过 FTP 上传或下载的教程(Objective-C)吗?最好能展示如何将文件下载到临时目录,然后稍后上传?我不介意针对
集成()给出了非常错误的答案: integrate(function (x) dnorm(x, -5, 0.07), -Inf, Inf, subdivisions = 10000L) # 2.127
我是一名优秀的程序员,十分优秀!