1.介绍

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

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

2.redis的基本操作对比

数据类型操作JedisStringRedisTemplate
String设置set("k","v")template.opsForValue().set("k","v")
获取get("k")template.opsForValue().get("k")
增1incr("k")template.boundValueOps("k").increment(1)
减1decr("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")
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐