Jedis和RedisTemplate操作比较
Jedis是Redis官方推荐的面向Java的操作Redis的客户端。jedis实例是非线程安全的,常常通过JedisPool连接池去管理实例,在多线程情况下让每个线程有自己独立的jedis实例。RedisTemplate是SpringDataRedis中对JedisApi的高度封装。RedisTemplate是基于某个具体实现的再封装,比如说springBoot1.x时,具体实现是jedis;而
·
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的基本操作对比
数据类型 | 操作 | 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") |
更多推荐
已为社区贡献3条内容
所有评论(0)