Redis笔记(六):Java中使用Redis
Java程序使用Redis
添加依賴包
Maven依賴方式
<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.9.0</version> </dependency>下載Jar包方式
下載地址:?http://central.maven.org/maven2/redis/clients/jedis/2.9.0/jedis-2.9.0.jar
?
代碼使用示例
package com.louis.test;import java.util.HashMap; import java.util.Iterator; import java.util.Map;import org.junit.Test;import redis.clients.jedis.Jedis;public class TestRedis {private static Jedis jedis;static {// 連接服務器,這里是本地jedis = new Jedis("127.0.0.1", 6379);// 如果需要,進行權限認證 // jedis.auth("");}// 字符串操作 @Testpublic void testString() {jedis.set("name", "張揚");System.out.println( jedis.get("name") );// 追加操作jedis.append("name", "林語謠");System.out.println( jedis.get("name") );// 刪除鍵Long result = jedis.del("name");System.out.println( result ); //返回Long型 1表示成功0失敗// 設置多個鍵值對jedis.mset("name","敏敏", "city","上海");// 獲取多個鍵,返回一個列表類型System.out.println( jedis.mget("name", "city"));}// 哈希操作Hash @Testpublic void testHash() {Map<String,String> map = new HashMap<String,String>();map.put("name", "張揚");map.put("age", "20");// 存儲數據jedis.hmset("user", map);// 讀取數據 返回一個列表類型 [張揚, 20]System.out.println( jedis.hmget("user", "name","age") );// HKEYS key 獲取所有哈希表中的字段,返回一個列表[name, age]System.out.println( jedis.hkeys("user") );// HVALS key,獲取哈希表中所有值System.out.println( jedis.hvals("user") );// HLEN key,獲取哈希表中字段的數量System.out.println( jedis.hlen("user") );// 獲取所有的鍵,迭代操作Iterator<String> iter = jedis.hkeys("user").iterator();while(iter.hasNext()) {String key = iter.next();System.out.println( key+"--"+jedis.hmget("user", key) );}}// List操作 @Testpublic void testList() {// LPUSH key value1 [value2] 將一個或多個值插入到列表頭部jedis.lpush("Programming language", "Java");jedis.lpush("Programming language", "Python");jedis.lpush("Programming language", "C++");// 獲取數據 返回一個list [Python, Java]// 第一個是key,第二個是起始位置,第三個是結束位置 // 其中0表示列表的第一個元素, 1表示列表的第二個元素,以此類推。 // 你也可以使用負數下標,以-1表示列表的最后一個元素,-2表示列表的倒數第二個元素,以此類推。System.out.println( jedis.lrange("Programming language", 0, -1) );// LPUSHX key value 將一個值插入到已存在的列表頭部jedis.lpushx("Programming language", "php");System.out.println( jedis.lrange("Programming language", 0, -1) );// RPUSH key value1 [value2] 在列表中添加一個或多個值jedis.rpush("Programming language", "C");System.out.println( jedis.lrange("Programming language", 0, -1) );// 輸出情況// [C++, Python, Java]// [php, C++, Python, Java]// [php, C++, Python, Java, C] }// Set操作 @Testpublic void testSet() {// 向集合添加一個或多個成員jedis.sadd("webSite", "阿里巴巴","網易");jedis.sadd("webSite", "騰訊");// SCARD key 獲取集合的成員數System.out.println( jedis.scard("webSite") );// SMEMBERS key 返回集合中的所有成員,返回類型列表[阿里巴巴, 騰訊, 網易]注意順序不唯一System.out.println( jedis.smembers("webSite") );// SSCAN key cursor [MATCH pattern] [COUNT count] 迭代集合中的元素System.out.println(jedis.sscan("webSite", "0") );}// sorted set有序Set @Testpublic void testSortSet() {// Redis 有序集合和集合一樣也是string類型元素的集合,且不允許重復的成員。// 不同的是每個元素都關聯一個double類型的分數,redis通過次分數來為集合中的成員進行從小到大的排序。// 有序集合的成員是唯一的,但分數(score)卻可以重復。jedis.zadd("city", 0, "北京");jedis.zadd("city", 1, "上海");jedis.zadd("city", 2, "杭州");// ZCARD key 獲取有序集合的成員數System.out.println( jedis.zcard("city") );// ZREVRANK key member 返回有序集合中指定成員的排名,有序集成員按分數值遞減(從大到小)排序,
// java中的方法是zrevrangeByScoreSystem.out.println( jedis.zrevrangeByScore("city", 5, 0) );} }
?
Spring Boot集成Redis
1.新建Spring Boot項目
添加spring-boot-starter-data-redis依賴
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId> </dependency>本文會根據StringRedisTemplate、RedisTemplate這兩個模板來介紹,其中StringRedisTemplate繼承自RedisTemplate,只能操作鍵值都是String類型的數據。在實際開發中建議使用RedisTemplate<K,V>。
查詢源碼可知RedisTemplate默認使用JdkSerializationRedisSerializer序列化,而StringRedisTemplate則使用StringRedisSerializer。
2.配置redis
在application.properties中配置如下:
######################################################## ###Redis (RedisConfiguration) ######################################################## spring.redis.database=1 spring.redis.host=127.0.0.1 spring.redis.port=6379 spring.redis.password= spring.redis.pool.max-idle=8 spring.redis.pool.min-idle=0 spring.redis.pool.max-active=8 spring.redis.pool.max-wait=-1 spring.redis.timeout=50003.編寫代碼
1.創建model
package com.haq.entity;import java.io.Serializable;/*** Created by on 2017/2/24.*/ public class User implements Serializable {private static final long serialVersionUId = 1L;private String id;private String name;public User(){super();}public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "User{" +"id='" + id + '\'' +", name='" + name + '\'' +'}';} }2.創建RedisService
package com.haq.common.redis;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.core.ValueOperations; import org.springframework.stereotype.Service;import javax.annotation.Resource;/*** Created by on 2017/3/1.*/ @Service public class RedisService {@AutowiredStringRedisTemplate stringRedisTemplate;@Resource(name = "stringRedisTemplate")ValueOperations<String, String> valOpsStr;@AutowiredRedisTemplate<Object, Object> redisTemplate;@Resource(name = "redisTemplate")ValueOperations<Object, Object> valOpsObj;/*** 根據指定key獲取String* @param key* @return*/public String getStr(String key){return valOpsStr.get(key);}/*** 設置Str緩存* @param key* @param val*/public void setStr(String key, String val){valOpsStr.set(key,val);}/*** 刪除指定key* @param key*/public void del(String key){stringRedisTemplate.delete(key);}/*** 根據指定o獲取Object* @param o* @return*/public Object getObj(Object o){return valOpsObj.get(o);}/*** 設置obj緩存* @param o1* @param o2*/public void setObj(Object o1, Object o2){valOpsObj.set(o1, o2);}/*** 刪除Obj緩存* @param o*/public void delObj(Object o){redisTemplate.delete(o);}}3.創建RedisController
package com.haq.web;import com.haq.common.redis.RedisService; import com.haq.entity.User; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;/*** Created by on 2017/3/1.*/ @RestController @RequestMapping("/redis") public class RedisController {@AutowiredRedisService redisService;/*** 設置Str緩存* @param key* @param val* @return*/@RequestMapping(value = "setStr")public String setStr(String key, String val){try {redisService.setStr(key, val);return "success";} catch (Exception e){e.printStackTrace();return "error";}}/*** 根據key查詢Str緩存* @param key* @return*/@RequestMapping(value = "getStr")public String getStr(String key){return redisService.getStr(key);}/*** 根據key產出Str緩存* @param key* @return*/@RequestMapping(value = "delStr")public String delStr(String key){try {redisService.del(key);return "success";} catch (Exception e){return "error";}}/*** 設置obj緩存* @param key* @param user* @return*/@RequestMapping(value = "setObj")public String setObj(String key, User user){try {redisService.setObj(key, user);return "success";} catch (Exception e){e.printStackTrace();return "error";}}/*** 獲取obj緩存* @param key* @return*/@RequestMapping(value = "getObj")public Object getObj(String key){return redisService.getObj(key);}/*** 刪除obj緩存* @param key* @return*/@RequestMapping(value = "delObj")public Object delObj(String key){try {redisService.delObj(key);return "success";} catch (Exception e){e.printStackTrace();return "error";}}}4.運行測試
1.StringRedisTemplate
http://127.0.0.1:8080/redis/setStr?key=aa&val=name
http://127.0.0.1:8080/redis/getStr?key=aa
http://127.0.0.1:8080/redis/delStr?key=aa
2.RedisTemplate
http://127.0.0.1:8080/redis/setObj?key=aa&id=1&name=test
http://127.0.0.1:8080/redis/getObj?key=aa
http://127.0.0.1:8080/redis/delObj?key=aa
以上地址都能通過測試,在這里就不一一截圖了
?
參考資料
http://www.runoob.com/redis/redis-java.html
https://www.cnblogs.com/floay/p/6485742.html
https://blog.csdn.net/u012385190/article/details/53464621
?
作者:朝雨憶輕塵
出處:https://www.cnblogs.com/xifengxiaoma/?
版權所有,歡迎轉載,轉載請注明原文作者及出處。
?
轉載于:https://www.cnblogs.com/xifengxiaoma/p/9430786.html
總結
以上是生活随笔為你收集整理的Redis笔记(六):Java中使用Redis的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (转)c#中const与readonly
- 下一篇: 以太坊solidity编程常见错误(不定