RedisTemplate用法,直接上代码


/**
 * StringRedisTemplate继承了RedisTemplate但两者的数据并不互通
 * 一共五种数据结构
 * 1.redisTemplate.opsForValue() 字符串
 * 2.redisTemplate.opsForHash()   hash
 * 3.redisTemplate.opsForList()   list
 * 4.redisTemplate.opsForSet()    无序set
 * 5.redisTemplate.opsForZSet()   有序set
 *
 * @author 公众号:码农脱贫
 */
@SpringBootTest
@RunWith(SpringRunner.class)
public class MyTest {
    @Resource
    private StringRedisTemplate stringRedisTemplate;

    /**
     * 1.redisTemplate.opsForValue() 字符串
     */
    @Test
    public void testString() {
        //存值
        stringRedisTemplate.opsForValue().set("currentUser", "admin");
        //取值
        String currentUser = stringRedisTemplate.opsForValue().get("currentUser");
        System.out.println(currentUser);
    }

    /**
     * 2.redisTemplate.opsForHash()   hash
     */
    @Test
    public void testHash() {
        Map map = new HashMap();
        map.put("zs", "36");
        map.put("ls", "18");
        map.put("wu", "40");
        map.put("zl", "22");
        //单独存一条数据
        stringRedisTemplate.opsForHash().put("hash", "hh", "100");
        //单独取值
        String hh = (String) stringRedisTemplate.opsForHash().get("hash", "hh");
        System.out.println(hh);//100
        //存一个map
        stringRedisTemplate.opsForHash().putAll("hash", map);
        //根据双key获取某一个值
        Object zs = stringRedisTemplate.opsForHash().get("hash", "zs");
        System.out.println(zs);//36
        //获取所有的值
        List hash = stringRedisTemplate.opsForHash().values("hash");
        System.out.println(hash);//[22, 18, 36, 40, 100]
    }

    /**
     * 3.redisTemplate.opsForList()   list
     */
    @Test
    public void testList() {
        List list = new ArrayList();
        list.add("zs");
        list.add("li");
        //从左边添加所有的list集合数据
        stringRedisTemplate.opsForList().leftPushAll("list", list);
        /**
         * key:key值
         * start:查询集合开始位置(从0开始)
         * end:查询集合结束位置(0,-1是查询所有)
         */
        List stringList = stringRedisTemplate.opsForList().range("list", 0, -1);
        System.out.println(stringList);//[li, zs]
    }

    /**
     * 4.redisTemplate.opsForSet()    无序set
     * Redis的Set是string类型的无序集合。
     * 集合成员是唯一的,这就意味着集合中不能出现重复的数据。
     */
    @Test
    public void testSet() {
        Long add = stringRedisTemplate.opsForSet().add("set", "zs", "ls", "ww", "zl");
        //返回值是添加的个数
        System.out.println(add);//4
        //查询所有的集合数据
        Set set = stringRedisTemplate.opsForSet().members("set");
        System.out.println(set);//[ww, ls, zs, zl]  结果也是无序的,和存入的顺序不一致
    }

    /**
     * 5.redisTemplate.opsForZSet()   有序set
     * Redis 有序集合和无序集合一样也是string类型元素的集合,且不允许重复的成员。
     * 不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
     * 有序集合的成员是唯一的,但分数(score)却可以重复。
     */
    @Test
    public void testZSet() {
        //添加数据,返回值是布尔值
        stringRedisTemplate.opsForZSet().add("zset", "score-1", 1);
        stringRedisTemplate.opsForZSet().add("zset", "score-2", 2);
        stringRedisTemplate.opsForZSet().add("zset", "score-3", 3);
        stringRedisTemplate.opsForZSet().add("zset", "score-4", 4);
        //获取所有结果
        Set zset = stringRedisTemplate.opsForZSet().range("zset", 0, -1);
        System.out.println(zset);//[score-1, score-2, score-3, score-4]  根据分数,由小到大排序
    }


} 
  

 

你可能感兴趣的:(nosql数据库)