一、Redis的基本數據類型(jedis操作類型數據)
1、導入依賴(導入Redis依賴,讓項目支持使用Redis)
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>
<!-- https://mvnrepository.com/artifact/redis.clients/jedis --> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency>
2、創建一個普通Java類,導入Jedis並完成基本配置
3、類型演示
(1)jedis操作String類型數據
/** * jedis操作String類型數據 */ @Test public void operationString(){ //切換到數據庫 jedis.select(1); //設置一個String類型的key-value(添加數據) jedis.set("strKey01","strValue01"); //設置key的有效時間 //jedis.expire("strKey01",20); //獲取String數據 String value = jedis.get("strKey01"); System.out.println("對應存放的value值為:"+value); //修改數據 jedis.set("strKey01","strValue02"); //刪除數據 jedis.del("strKey01"); //設置多個值 jedis.mset("strKey01","strValue01","strKey02","strValue01","strKey03","strValue03","strKey04","1"); //+1操作 jedis.incr("strKey04"); //-1操作 jedis.decr("strKey04"); //拼接 jedis.append("strKey04","append"); }
執行效果如下
(2)jedis操作List類型數據
/** * jedis操作List類型數據 */ @Test public void operationList(){ //清空集合值 jedis.del("listkey01","listkey02"); //設置List集合值,左側插入 jedis.lpush("listkey01","張三","李四","王五"); //設置List集合值,右側插入 jedis.rpush("listkey02","北京","上海","廣州"); //過去List集合值 List<String> listkey01 = jedis.lrange("listkey01", 0, -1); for (String item:listkey01){ System.out.println(item); } //更改List集合數據 jedis.lset("listkey01",0,"趙六"); }
執行結果如下
(3)jedis操作Set類型數據
/** * jedis操作Set類型數據 */ @Test public void operationSet(){ //切換到數據庫 jedis.select(2); //設置Set集合 jedis.sadd("setkey01","張三","李四","王五"); //獲取 Set<String> setkey01 = jedis.smembers("setkey01"); for (String item:setkey01){ System.out.println(item); } }
執行結果如下
(4)jedis操作SortedSet(有序set集合)類型數據
/** * jedis操作SortedSet(有序set集合)類型數據 */ @Test public void operationSortedSet(){ //切換到數據庫 jedis.select(2); //設置SortedSet集合 jedis.zadd("setkey02",1,"北京"); jedis.zadd("setkey02",1,"上海"); jedis.zadd("setkey02",1,"廣州"); //獲取SortedSet Set<String> setkey02 = jedis.zrange("setkey02", 0, -1); for (String item:setkey02){ System.out.println(item); } }
執行結果如下
(5)jedis操作Map類型數據
/** * jedis操作Map類型數據 */ @Test public void operationMap(){ //切換到數據庫 jedis.select(3); //設置Map Map<String,String> map=new HashMap<>(); map.put("name","張三"); map.put("age","18"); jedis.hmset("mapkey01",map); //獲取值 List<String> value = jedis.hmget("mapkey01", "name", "age"); for (String item:value){ System.out.println(item); }
執行結果如下
二、只用Java操作Redis
1、導入依賴
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.1.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>
2、配置Application.yml文件
3、創建SpringBootRedis類
package com.jedis.service; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.List; import java.util.Map; import java.util.Set; import java.util.concurrent.TimeUnit; @Service public class SpringBootRedis { @Resource private StringRedisTemplate stringRedisTemplate; public void set(String key,Object value){ if (value instanceof String){ //200L, TimeUnit.SECONDS:用來設置時間,TimeUnit.SECONDS相當於設置單位 //stringRedisTemplate.opsForValue().set(key,(String)value,200L, TimeUnit.SECONDS); stringRedisTemplate.opsForValue().set(key,(String)value); }else if(value instanceof List){ List<String> list=(List)value; for (String item:list){ stringRedisTemplate.opsForList().leftPush(key,item); } }else if (value instanceof Set){ String[] objects = (String[]) ((Set) value).toArray(new String[((Set) value).size()]); stringRedisTemplate.opsForSet().add(key,objects); }else if (value instanceof Map){ stringRedisTemplate.opsForHash().putAll(key,(Map<?,?>) value); } } }
4、創建controller類
package com.jedis.controller; import com.jedis.service.SpringBootRedis; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.util.*; @Controller public class RedisController { @Resource private SpringBootRedis springBootRedis; @RequestMapping ("/setString") public void setString(HttpServletResponse response){ springBootRedis.set("strkey","strvalue"); } @RequestMapping("/setList") public void setList(HttpServletResponse response){ List<String> stringList=new ArrayList<>(); stringList.add("張三"); stringList.add("李四"); stringList.add("王五"); springBootRedis.set("listkey",stringList); } @RequestMapping("/setSet") public void setSet(HttpServletResponse response){ Set<String> set=new HashSet<>(); set.add("北京"); set.add("上海"); springBootRedis.set("setkey",set); } @RequestMapping("/setMap") public void setMap(HttpServletResponse response){ Map map=new HashMap(); map.put("name","張三"); map.put("age","18"); springBootRedis.set("mapkey",map); } }
5、創建啟動類StartApplication
package com.jedis; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class StartApplication { public static void main(String[] args){ SpringApplication.run(StartApplication.class,args); } }
6、實現效果如下
(1)http://localhost:8080/setString
(2)http://localhost:8080/setList
(3)http://localhost:8080/setSet
(4)http://localhost:8080/setMap