1
1
package me .chanjar .weixin .mp .api ;
2
2
3
3
import redis .clients .jedis .Jedis ;
4
+ import redis .clients .jedis .JedisPool ;
4
5
5
6
/**
6
7
* 基于Redis的微信配置provider
7
8
*
8
- * @author lly835
9
+ * @author nickwong
9
10
*/
10
11
@ SuppressWarnings ("hiding" )
11
12
public class WxMpInRedisConfigStorage extends WxMpInMemoryConfigStorage {
@@ -16,75 +17,115 @@ public class WxMpInRedisConfigStorage extends WxMpInMemoryConfigStorage {
16
17
17
18
private final static String CARDAPI_TICKET_KEY = "wechat_cardapi_ticket_" ;
18
19
19
- protected Jedis jedis ;
20
+ /**
21
+ * 使用连接池保证线程安全
22
+ */
23
+ protected final JedisPool jedisPool ;
24
+
25
+ private String accessTokenKey ;
26
+
27
+ private String jsapiTicketKey ;
28
+
29
+ private String cardapiTicketKey ;
30
+
31
+ public WxMpInRedisConfigStorage (JedisPool jedisPool ) {
32
+ this .jedisPool = jedisPool ;
33
+ }
34
+
35
+ /**
36
+ * 每个公众号生成独有的存储key
37
+ *
38
+ * @param appId
39
+ */
40
+ @ Override
41
+ public void setAppId (String appId ) {
42
+ super .setAppId (appId );
43
+ this .accessTokenKey = ACCESS_TOKEN_KEY .concat (appId );
44
+ this .jsapiTicketKey = JSAPI_TICKET_KEY .concat (appId );
45
+ this .cardapiTicketKey = CARDAPI_TICKET_KEY .concat (appId );
46
+ }
20
47
21
48
@ Override
22
49
public String getAccessToken () {
23
- return jedis .get (ACCESS_TOKEN_KEY .concat (appId ));
50
+ try (Jedis jedis = this .jedisPool .getResource ()) {
51
+ return jedis .get (accessTokenKey );
52
+ }
24
53
}
25
54
26
55
@ Override
27
56
public boolean isAccessTokenExpired () {
28
- return jedis .ttl (ACCESS_TOKEN_KEY .concat (appId )) < 2 ;
57
+ try (Jedis jedis = this .jedisPool .getResource ()) {
58
+ return jedis .ttl (accessTokenKey ) < 2 ;
59
+ }
29
60
}
30
61
31
62
@ Override
32
63
public synchronized void updateAccessToken (String accessToken , int expiresInSeconds ) {
33
- jedis .set (ACCESS_TOKEN_KEY .concat (appId ), accessToken );
34
- jedis .expire (ACCESS_TOKEN_KEY .concat (appId ), expiresInSeconds - 200 );
64
+ try (Jedis jedis = this .jedisPool .getResource ()) {
65
+ jedis .setex (accessTokenKey , expiresInSeconds - 200 , accessToken );
66
+ }
35
67
}
36
68
37
69
@ Override
38
70
public void expireAccessToken () {
39
- jedis .expire (ACCESS_TOKEN_KEY .concat (appId ), 0 );
71
+ try (Jedis jedis = this .jedisPool .getResource ()) {
72
+ jedis .expire (accessTokenKey , 0 );
73
+ }
40
74
}
41
75
42
76
@ Override
43
77
public String getJsapiTicket () {
44
- return jedis .get (JSAPI_TICKET_KEY .concat (appId ));
78
+ try (Jedis jedis = this .jedisPool .getResource ()) {
79
+ return jedis .get (jsapiTicketKey );
80
+ }
45
81
}
46
82
47
83
@ Override
48
84
public boolean isJsapiTicketExpired () {
49
- return jedis .ttl (JSAPI_TICKET_KEY .concat (appId )) < 2 ;
85
+ try (Jedis jedis = this .jedisPool .getResource ()) {
86
+ return jedis .ttl (jsapiTicketKey ) < 2 ;
87
+ }
50
88
}
51
89
52
90
@ Override
53
91
public synchronized void updateJsapiTicket (String jsapiTicket , int expiresInSeconds ) {
54
- jedis .set (JSAPI_TICKET_KEY .concat (appId ), jsapiTicket );
55
- jedis .expire (JSAPI_TICKET_KEY .concat (appId ), expiresInSeconds - 200 );
92
+ try (Jedis jedis = this .jedisPool .getResource ()) {
93
+ jedis .setex (jsapiTicketKey , expiresInSeconds - 200 , jsapiTicket );
94
+ }
56
95
}
57
96
58
97
@ Override
59
98
public void expireJsapiTicket () {
60
- jedis .expire (JSAPI_TICKET_KEY .concat (appId ), 0 );
99
+ try (Jedis jedis = this .jedisPool .getResource ()) {
100
+ jedis .expire (jsapiTicketKey , 0 );
101
+ }
61
102
}
62
103
63
- /**
64
- * 卡券api_ticket
65
- */
66
104
@ Override
67
105
public String getCardApiTicket () {
68
- return jedis .get (CARDAPI_TICKET_KEY .concat (appId ));
106
+ try (Jedis jedis = this .jedisPool .getResource ()) {
107
+ return jedis .get (cardapiTicketKey );
108
+ }
69
109
}
70
110
71
111
@ Override
72
112
public boolean isCardApiTicketExpired () {
73
- return jedis .ttl (CARDAPI_TICKET_KEY .concat (appId )) < 2 ;
113
+ try (Jedis jedis = this .jedisPool .getResource ()) {
114
+ return jedis .ttl (cardapiTicketKey ) < 2 ;
115
+ }
74
116
}
75
117
76
118
@ Override
77
119
public synchronized void updateCardApiTicket (String cardApiTicket , int expiresInSeconds ) {
78
- jedis .set (CARDAPI_TICKET_KEY .concat (appId ), cardApiTicket );
79
- jedis .expire (CARDAPI_TICKET_KEY .concat (appId ), expiresInSeconds - 200 );
120
+ try (Jedis jedis = this .jedisPool .getResource ()) {
121
+ jedis .setex (cardapiTicketKey , expiresInSeconds - 200 , cardApiTicket );
122
+ }
80
123
}
81
124
82
125
@ Override
83
126
public void expireCardApiTicket () {
84
- jedis .expire (CARDAPI_TICKET_KEY .concat (appId ), 0 );
85
- }
86
-
87
- public void setJedis (Jedis jedis ) {
88
- this .jedis = jedis ;
127
+ try (Jedis jedis = this .jedisPool .getResource ()) {
128
+ jedis .expire (cardapiTicketKey , 0 );
129
+ }
89
130
}
90
131
}
0 commit comments