Jedis和RedisTemplate操作比较

1.介绍

Jedis是Redis官方推荐的面向Java的操作Redis的客户端。Jedis实例是非线程安全的,常常通过JedisPool连接池去管理实例,在多线程情况下让每个线程有自己独立的jedis实例。以上都是对单机进行操作,如果是对redis集群的操作需要使用JedisCluster。可参考

RedisTemplate是SpringDataRedis中对JedisApi的高度封装。RedisTemplate是基于某个具体实现的再封装,比如说springBoot1.x时,具体实现是Jedis;而到了springBoot2.x时,具体实现变成了lettuce。 SpringDataRedis相对于Jedis来说可以方便地更换Redis的Java客户端,比Jedis多了自动管理连接池的特性,方便与其他Spring框架进行搭配使用如:SpringCache

2.redis的基本操作对比

数据类型 操作 Jedis StringRedisTemplate String 设置 set("k","v") template.opsForValue().set("k","v") 获取 get("k") template.opsForValue().get("k") 增1 incr("k") template.boundValueOps("k").increment(1) 减1 decr("k") template.boundValueOps("k").increment(-1) 设置时间 setex("k",seconds,"v") template.opsForValue().set("k","v",20, TimeUnit.SECONDS) 不存在 就设置 setnx("k","v") template.opsForValue().setIfAbsent("k", "v") 获取过期时间 ttl("k") template.getExpire("k") 删除 del("k") template.delete("k") Hash 设置 jedis.hset("pig","name","peiqi"; template.opsForHash().put("pig","name","peiqi") 获取 jedis.hget("pig","name") template.opsForHash().get("pig", "name") 获取所有template.opsForHash().values("pig") 删除 jedis.hdel("pig","name") template.opsForHash().delete("pig","name") 判断是否存在 jedis.hexists("pig","name") template.opsForHash().hasKey("pig","name") List 左/右不做区分 添加 rpush("k","v") template.opsForList().rightPush("k","v") 移出 rpop("list") template.opsForList().rightPop("k") 长度 llen("k") template.opsForList().size("k") 获取 lrange("list",0,-1) //-1全部 template.opsForList().range("list", 0, -1) Set 添加 sadd("k","v") template.opsForSet().add("k","v") 值移除 srem("k","v") template.opsForSet().remove("k","v") 直接移 spop("k") template.opsForSet().pop("k") 长度 scard("k") template.opsForSet().size("k") 交集 sinter("k1","k2" ) template.opsForSet().intersect("k", "k2") 并集 sunion("k1","k2" ) template.opsForSet().union("k", "k2") 差集 sdiff("k1","k2" ) template.opsForSet().difference("k", "k2") Zset 增加 zadd("k",1,"a") template.opsForZSet().add("k","aa",12) 排名结果 zrevrange("k", 0, -1) template.opsForZSet().reverseRange("k", 0, -1) 排名分数 zrevrangeByScoreWithScores("k", 12, 10); template.opsForZSet().reverseRangeByScore("k", 1, 100) 修改分数 zincrby("k",20,"a") template.opsForZSet().incrementScore("k","aa",19) 数量 zcard("k") template.opsForZSet().zCard("k") 获取排名 zrank("k","a") template.opsForZSet().rank("k","aa")
经验分享 程序员 微信小程序 职场和发展