redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。
言归正传,目前Redis大概有3中基于Java语言的Client:
-
Jredis
-
Jedis
-
Redis4J
这里只说Jedis,因为它是官方提供的唯一Redis Client For Java Provider!
下面我们就来看看如何搭建一个使用在我们的应用中使用redis吧!
demo的源码下载地址:源码地址(此demo使用了一个mysql和一个redis,实现了从不同的数据源读取。两者的区别主要在DAO层的实现具体可以看com.huawei.shop.redis.UserRepository和com.huawei.shop.repository的区别。)
这个连接的源码是使用mvn实现的:mvn版
1.依赖的jar:
除了spring依赖的jar之外我们还需要:jedis-2.1.0.jar(jedis),spring-data-redis-1.0.1.RELEASE.jar(spring-data-redis)
spring依赖的jar我就不一一列举了,如果有新手不知道的可以参见我博客里面的:spring MVC demo,里面有如何使用spring MVC搭建一个应用。
2.spring的配置:
spring配置的位置就不说了,不清楚的参见上面的那篇博客。我们来看看配置的内容吧:redis-context.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
|
<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
xsi:schemaLocation="
>
<!-- Root Context: defines shared resources visible to all other web components -->
<
context:annotation-config
/>
<
bean
id
=
"connectionFactory"
class
=
"org.springframework.data.redis.connection.jedis.JedisConnectionFactory"
p:host-name
=
"${redis.host}"
p:port
=
"${redis.port}"
p:password
=
"${redis.pass}"
/>
<!--配置redis.properties文件的位置信息,路径还是区分大小写 -->
<
bean
class
=
"org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
><
property
name
=
"locations"
value
=
"WEB-INF/jdbc/redis.properties"
/> </
bean
>
<
bean
id
=
"redisTemplate"
class
=
"org.springframework.data.redis.core.StringRedisTemplate"
p:connection-factory-ref
=
"connectionFactory"
/>
</
beans
>
|
redis.properties为你redis的信息:
redis.host=192.168.8.142
redis.port=6379
redis.pass=
下面我们来看使用redis的java代码,使用spring的注释,不需要其他配置。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
import
javax.inject.Named;
import
org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.data.redis.core.StringRedisTemplate;
@Named
public
class
UserRepository
{
@Autowired
private
StringRedisTemplate template;
/**
* redis的查询操作,根据一个key值,获取value
*/
public
String getPassword(String user) {
// find uid
String passwd = template.opsForValue().get(user);
return
passwd;
}
}
|
上面这段代码是spring的Repository,只提供一个查询的方法,其他的方法学会这一个就不难了。很简单吧,这里使用的template就是我们在上面的配置文件里面的org.springframework.data.redis.core.StringRedisTemplate。spring帮我们完成了其他的操作。
很简单吧,把control的代码也贴一下吧,方便更多的新手学习。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
@Controller
@Scope
(
"prototype"
)
public
class
LoginController
{
private
static
final
Logger logger = Logger.getLogger(
"DEBUG"
);
@Autowired
private
UserRepository user;
@RequestMapping
(value =
"/login"
, method = RequestMethod.POST)
public
String login(String name, String password, Model model)
{
String pass = user.getPassword(name);
if
(pass.equals(password))
{
return
"home"
;
}
|
这个只是一个redis的简单入门配置,如果有想要跟深入学习的,可以看一下: