RedisDaoImpl.java 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252
  1. package com.zhcs.dt.dao.redis.impl;
  2. import java.io.IOException;
  3. import java.io.InputStream;
  4. import java.util.HashMap;
  5. import java.util.Iterator;
  6. import java.util.List;
  7. import java.util.Map;
  8. import java.util.Properties;
  9. import java.util.Set;
  10. import org.springframework.dao.DataAccessException;
  11. import org.springframework.data.redis.connection.RedisConnection;
  12. import org.springframework.data.redis.core.RedisCallback;
  13. import org.springframework.data.redis.serializer.RedisSerializer;
  14. import org.springframework.stereotype.Repository;
  15. import redis.clients.jedis.Jedis;
  16. import com.zhcs.dt.dao.AbstractBaseRedisDao;
  17. import com.zhcs.dt.dao.redis.RedisDao;
  18. import com.zhcs.dt.util.DbFH;
  19. import com.zhcs.dt.util.PageData;
  20. @Repository("redisDaoImpl")
  21. public class RedisDaoImpl extends AbstractBaseRedisDao<String, PageData> implements RedisDao{
  22. /**新增(存储字符串)
  23. * @param key
  24. * @param value
  25. * @return
  26. */
  27. @Override
  28. public boolean addString(final String key, final String value) {
  29. boolean result = redisTemplate.execute(new RedisCallback<Boolean>() {
  30. public Boolean doInRedis(RedisConnection connection)
  31. throws DataAccessException {
  32. RedisSerializer<String> serializer = getRedisSerializer();
  33. byte[] jkey = serializer.serialize(key);
  34. byte[] jvalue = serializer.serialize(value);
  35. return connection.setNX(jkey, jvalue);
  36. }
  37. });
  38. return result;
  39. }
  40. /**新增(拼接字符串)
  41. * @param key
  42. * @param value
  43. * @return
  44. */
  45. @Override
  46. public boolean appendString(final String key, final String value) {
  47. boolean result = redisTemplate.execute(new RedisCallback<Boolean>() {
  48. public Boolean doInRedis(RedisConnection connection)
  49. throws DataAccessException {
  50. RedisSerializer<String> serializer = getRedisSerializer();
  51. byte[] jkey = serializer.serialize(key);
  52. byte[] jvalue = serializer.serialize(value);
  53. if(connection.exists(jkey)){
  54. connection.append(jkey, jvalue);
  55. return true;
  56. }else{
  57. return false;
  58. }
  59. }
  60. });
  61. return result;
  62. }
  63. /**新增(存储Map)
  64. * @param key
  65. * @param value
  66. * @return
  67. */
  68. @Override
  69. public String addMap(String key, Map<String, String> map) {
  70. Jedis jedis = getJedis();
  71. String result = jedis.hmset(key,map);
  72. jedis.close();
  73. return result;
  74. }
  75. /**获取map
  76. * @param key
  77. * @return
  78. */
  79. @Override
  80. public Map<String,String> getMap(String key){
  81. Jedis jedis = getJedis();
  82. Map<String, String> map = new HashMap<String, String>();
  83. Iterator<String> iter=jedis.hkeys(key).iterator();
  84. while (iter.hasNext()){
  85. String ikey = iter.next();
  86. map.put(ikey, jedis.hmget(key,ikey).get(0));
  87. }
  88. jedis.close();
  89. return map;
  90. }
  91. /**新增(存储List)
  92. * @param key
  93. * @param pd
  94. * @return
  95. */
  96. @Override
  97. public void addList(String key, List<String> list){
  98. Jedis jedis = getJedis();
  99. jedis.del(key); //开始前,先移除所有的内容
  100. for(String value:list){
  101. jedis.rpush(key,value);
  102. }
  103. jedis.close();
  104. }
  105. /**获取List
  106. * @param key
  107. * @return
  108. */
  109. public List<String> getList(String key){
  110. Jedis jedis = getJedis();
  111. List<String> list = jedis.lrange(key,0,-1);
  112. jedis.close();
  113. return list;
  114. }
  115. /**新增(存储set)
  116. * @param key
  117. * @param set
  118. */
  119. public void addSet(String key, Set<String> set){
  120. Jedis jedis = getJedis();
  121. jedis.del(key);
  122. for(String value:set){
  123. jedis.sadd(key,value);
  124. }
  125. jedis.close();
  126. }
  127. /**获取Set
  128. * @param key
  129. * @return
  130. */
  131. public Set<String> getSet(String key){
  132. Jedis jedis = getJedis();
  133. Set<String> set = jedis.smembers(key);
  134. jedis.close();
  135. return set;
  136. }
  137. /**删除
  138. * (non-Javadoc)
  139. * @see com.zhcs.dt.dao.redis.RedisDao#delete(java.lang.String)
  140. */
  141. @Override
  142. public boolean delete(final String key) {
  143. boolean result = redisTemplate.execute(new RedisCallback<Boolean>() {
  144. public Boolean doInRedis(RedisConnection connection)
  145. throws DataAccessException {
  146. RedisSerializer<String> serializer = getRedisSerializer();
  147. byte[] jkey = serializer.serialize(key);
  148. if(connection.exists(jkey)){
  149. connection.del(jkey);
  150. return true;
  151. }else{
  152. return false;
  153. }
  154. }
  155. });
  156. return result;
  157. }
  158. /**删除多个
  159. * (non-Javadoc)
  160. * @see com.zhcs.dt.dao.redis.RedisDao#delete(java.util.List)
  161. */
  162. @Override
  163. public void delete(List<String> keys) {
  164. redisTemplate.delete(keys);
  165. }
  166. /**修改
  167. * (non-Javadoc)
  168. * @see com.zhcs.dt.dao.redis.RedisDao#eidt(java.lang.String, java.lang.String)
  169. */
  170. @Override
  171. public boolean eidt(String key, String value) {
  172. if(delete(key)){
  173. addString(key,value);
  174. return true;
  175. }
  176. return false;
  177. }
  178. /**通过key获取值
  179. * (non-Javadoc)
  180. * @see com.zhcs.dt.dao.redis.RedisDao#get(java.lang.String)
  181. */
  182. @Override
  183. public String get(final String keyId) {
  184. String result = redisTemplate.execute(new RedisCallback<String>() {
  185. public String doInRedis(RedisConnection connection)
  186. throws DataAccessException {
  187. RedisSerializer<String> serializer = getRedisSerializer();
  188. byte[] jkey = serializer.serialize(keyId);
  189. byte[] jvalue = connection.get(jkey);
  190. if (jvalue == null) {
  191. return null;
  192. }
  193. return serializer.deserialize(jvalue);
  194. }
  195. });
  196. return result;
  197. }
  198. /**获取Jedis
  199. * @return
  200. */
  201. public Jedis getJedis(){
  202. Properties pros = getPprVue();
  203. String isopen = pros.getProperty("redis.isopen"); //地址
  204. String host = pros.getProperty("redis.host"); //地址
  205. String port = pros.getProperty("redis.port"); //端口
  206. String pass = pros.getProperty("redis.pass"); //密码
  207. if("yes".equals(isopen)){
  208. Jedis jedis = new Jedis(host,Integer.parseInt(port));
  209. jedis.auth(pass);
  210. return jedis;
  211. }else{
  212. return null;
  213. }
  214. }
  215. /**读取redis.properties 配置文件
  216. * @return
  217. * @throws IOException
  218. */
  219. public Properties getPprVue(){
  220. InputStream inputStream = DbFH.class.getClassLoader().getResourceAsStream("redis.properties");
  221. Properties p = new Properties();
  222. try {
  223. p.load(inputStream);
  224. inputStream.close();
  225. } catch (IOException e) {
  226. //读取配置文件出错
  227. e.printStackTrace();
  228. }
  229. return p;
  230. }
  231. }