键值对的的操作在java里面也是很频繁的,下面记录了RedisTemplate 操作hash 的方法。
package com;import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringbootRedisAppMap {/***** * redisTemplate 操作 Map * */@Autowiredprivate RedisTemplate<String, String> redisTemplate;/******单个的方式写入redis*/@Testpublic void MapRedis0() {redisTemplate.opsForHash().put("map1", "k1", "value1");redisTemplate.opsForHash().put("map1", "k2", "value2");redisTemplate.opsForHash().put("map1", "k3", "value3");redisTemplate.opsForHash().put("map1", "k4", "value4");}/******声明的方式写入redis*/@Testpublic void MapRedis() {Map map=new HashMap<>();map.put("k1", "value1");map.put("k2", "value2");map.put("k3", "value3");map.put("k4", "value4");redisTemplate.opsForHash().putAll("map2", map);}/*****放置在后面(有点追加的意思)**/@Testpublic void MapRedis2() {redisTemplate.opsForHash().putIfAbsent("map2", "k5", "value5");}/******直接根据redis 的key 把map给删除了*/@Testpublic void MapRedis3() {redisTemplate.delete("map1");}/******根据redis的key 和hash 的key 删除当个 value*/@Testpublic void MapRedis4() {redisTemplate.opsForHash().delete("map2", "k5");}/******根据redis 的key 判断hash是否存在,有返回true, 不存在返回false*/@Testpublic void MapRedis5() {redisTemplate.hasKey("map2");System.err.println(redisTemplate.hasKey("map2"));}/******根据redis的key和map的key 判断 hash的key是否存在, 存在返回true,不存在返回 false*/@Testpublic void MapRedis6() {redisTemplate.opsForHash().hasKey("map2", "k4");redisTemplate.opsForHash().hasKey("map2", "k5");System.err.println(redisTemplate.opsForHash().hasKey("map2", "k4"));System.err.println(redisTemplate.opsForHash().hasKey("map2", "k5"));}/******给hash设置过期时间*/@Testpublic void MapRedis7() {Map map=new HashMap<>();map.put("k1", "value1");map.put("k2", "value2");map.put("k3", "value3");map.put("k4", "value4");redisTemplate.opsForHash().putAll("map3", map);redisTemplate.expire("map3", 1000, TimeUnit.SECONDS);//NANOSECONDS 纳秒//MICROSECONDS 微秒//MILLISECONDS 毫秒//SECONDS 秒//MINUTES 分钟//HOURS 小时//DAYS 天}/******获取过期时间,根据你默认存储进去的数据类型*/@Testpublic void MapRedis8() {redisTemplate.getExpire("map3");System.err.println(redisTemplate.getExpire("map3"));}/******获取过期时间,自定义获取的时间类型*/@Testpublic void MapRedis9() {redisTemplate.getExpire("map3", TimeUnit.SECONDS);System.err.println(redisTemplate.getExpire("map3", TimeUnit.MINUTES));}/******根据 redis 的key ,和 hash 的key 获取 hash里面的value*/@Testpublic void MapRedis10() {redisTemplate.opsForHash().get("map3", "k1");redisTemplate.opsForHash().get("map3", "k2");redisTemplate.opsForHash().get("map3", "k3");System.err.println( redisTemplate.opsForHash().get("map3", "k1"));System.err.println( redisTemplate.opsForHash().get("map3", "k2"));System.err.println( redisTemplate.opsForHash().get("map3", "k3"));}/****** 以数据的形式获取hash的value*/@Testpublic void MapRedis11() {Collection<Object> keys = new ArrayList<>();keys.add("k1");keys.add("k2");keys.add("k3");redisTemplate.opsForHash().multiGet("map3", keys);System.err.println(redisTemplate.opsForHash().multiGet("map3", keys));}/******根据redis的 key 获取key对应的hash表的所有键值对*/@Testpublic void MapRedis12() {Map<Object, Object> entries = redisTemplate.opsForHash().entries("map3");System.out.println(entries);}}