RedisTemplate的五种基本用法(nosql数据库)


/**
 * 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<String, String> map = new HashMap<String, String>();
        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<Object> hash = stringRedisTemplate.opsForHash().values("hash");
        System.out.println(hash);//[22, 18, 36, 40, 100]
    }

    /**
     * 3.redisTemplate.opsForList()   list
     */
    @Test
    public void testList() {
        List<String> list = new ArrayList<String>();
        list.add("zs");
        list.add("li");
        //从左边添加所有的list集合数据
        stringRedisTemplate.opsForList().leftPushAll("list", list);
        /**
         * key:key值
         * start:查询集合开始位置(从0开始)
         * end:查询集合结束位置(0,-1是查询所有)
         */
        List<String> 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<String> 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<String> zset = stringRedisTemplate.opsForZSet().range("zset", 0, -1);
        System.out.println(zset);//[score-1, score-2, score-3, score-4]  根据分数,由小到大排序
    }


}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值