1 一:Redis简介:
2 Redis是一个开源(BSD许可)的内存数据结构存储,用作数据库,缓存和消息代理。
3 简单来说,它是一个以(key,value)的形式存储数据的数据库.
4 官网:https://redis.io/download 去下载对应的版本
5 二:使用流程:
6 1.解压:redis-2.4.5-win32-win64.zip
7 运行对应的系统版本(32bit/64bit)中的redis-server.exe和redis-cli.exe文件来启动服务和输入相应的操作.
8 2.图形化界面jedis下载网址:https://github.com/xetorthio/jedis。
9 3.Spring Data Redis 的使用介绍 官网:http://projects.spring.io/spring-data-redis/
10 3.1引入相关的jar包文件
11 <dependency>
12 <groupId>redis.clients</groupId>
13 <artifactId>jedis</artifactId>
14 <version>2.6.2</version>
15 </dependency>
16 <dependency>
17 <groupId>org.apache.commons</groupId>
18 <artifactId>commons-pool2</artifactId>
19 <version>2.4.1</version>
20 </dependency>
21 <dependency>
22 <groupId>org.springframework.data</groupId>
23 <artifactId>spring-data-redis</artifactId>
24 <version>1.5.1.RELEASE</version>
25 </dependency>
26 3.2配置applicationContext.xml中的redisTemplate
27 <!-- 扫描redis的服务类 -->
28 <context:component-scan base-package="cn.itcast.redis.service" />
29 <!-- spring管理redis缓存管理器 -->
30 <bean id="redisCacheManager"
31 class="org.springframework.data.redis.cache.RedisCacheManager">
32 <constructor-arg index="0" ref="redisTemplate" />
33 </bean>
34 <cache:annotation-driven cache-manager="redisCacheManager"/>
35 <!-- jedis连接池 -->
36 <bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">
37 <property name="maxIdle" value="300" />
38 <property name="maxWaitMillis" value="3000" />
39 <property name="testOnBorrow" value="true" />
40 </bean>
41 <!-- jedis连接工厂 -->
42 <bean id="connectionFactory"
43 class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"
44 p:host-name="localhost" p:port="6379" p:pool-config-ref="poolConfig"
45 p:database="0" />
46 <!-- spring-data-redis提供模板 -->
47 <bean id="redisTemplate" class="org.springframework.data.redis.core.StringRedisTemplate">
48 <property name="connectionFactory" ref="connectionFactory" />
49 <property name="keySerializer">
50 <bean class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer" />
51 </property>
52 <property name="valueSerializer">
53 <bean class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer">
54 </bean>
55 </property>
56 </bean>
57 3.3发送邮件保存激活码24H到redis中
58 //在action类中注入RedisTemplate<String,String>
59 @Autowired
60 private RedisTemplate<String,String> redisTemplate;
61 // 生成激活码
62 String activecode = RandomStringUtils.randomNumeric(32);
63 // 将激活码保存到redis,设置24小时失效
64 redisTemplate.opsForValue().set(model.getTelephone(), activecode, 24,
65 TimeUnit.HOURS);
66 3.4判断激活码是否有效
67 // 属性驱动
68 private String activecode;
69
70 public void setActivecode(String activecode) {
71 this.activecode = activecode;
72 }
73 @Action("customer_activeMail")
74 public String activeMail() throws IOException {
75 ServletActionContext.getResponse().setContentType(
76 "text/html;charset=utf-8");
77 // 判断激活码是否有效
78 String activecodeRedis = redisTemplate.opsForValue().get(
79 model.getTelephone());
80 if (activecodeRedis == null || !activecodeRedis.equals(activecodeRedis)) {
81 // 激活码无效
82 ServletActionContext.getResponse().getWriter()
83 .println("激活码无效,请登录系统,重新绑定邮箱!");
84 } else {
85 // 激活码有效
86 // 防止重复绑定
87 // 调用CRM webService 查询客户信息,判断是否已经绑定
88 Customer customer = WebClient
89 .create("http://localhost:9002/crm_management/services"
90 + "/customerService/customer/telephone/"
91 + model.getTelephone())
92 .accept(MediaType.APPLICATION_JSON).get(Customer.class);
93 if (customer.getType() == null || customer.getType() != 1) {
94 // 没有绑定,进行绑定
95 WebClient.create(
96 "http://localhost:9002/crm_management/services"
97 + "/customerService/customer/updatetype/"
98 + model.getTelephone()).get();
99 ServletActionContext.getResponse().getWriter()
100 .println("邮箱绑定成功!");
101 } else {
102 // 已经绑定过
103 ServletActionContext.getResponse().getWriter()
104 .println("邮箱已经绑定过,无需重复绑定!");
105 }
106
107 // 删除redis的激活码
108 redisTemplate.delete(model.getTelephone());
109 }
110 return NONE;
111 }
112 3.5编写服务器类实现对应的方法(结合WebService技术实现数据的查询与操作)
113 编写实体类(@XmlRootElement)-->服务类的接口
114 (@Path&@Get/@Post/@Push/@Delete/)-->实现类-->Dao
115 @Produces({ "application/xml", "application/json" })/
116 @Consumes({ "application/xml", "application/json" })/
117