【Redis】Java操作Redis:RedisTemplate 关于五种数据类型的 API

上一篇文章,我们介绍了 Jedis 的使用。为了让 Spring 框架体系能够更加方便的接入 Redis 的功能,Spring 对 Jedis 进行了封装 ==> RedisTemplate。它支持所有的 redis 原生的 api。

需要引入的依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

在yml/properties文件中进行配置:

redis:
  host: 43.105.136.120
  port: 6379

在 RedisTemplate中提供了几个常用的接口方法的使用,分别是:

private ValueOperations<K, V> valueOps; 
private HashOperations<K, V> hashOps; 
private ListOperations<K, V> listOps; 
private SetOperations<K, V> setOps; 
private ZSetOperations<K, V> zSetOps; 

RedisTemplate 中定义了对5种数据结构操作:

redisTemplate.opsForValue(); // 操作字符串 
redisTemplate.opsForHash();  // 操作hash 
redisTemplate.opsForList();  // 操作list 
redisTemplate.opsForSet();   // 操作set 
redisTemplate.opsForZSet();  // 操作有序set 

注意,StringRedisTemplate 继承自 RedisTemplate,也一样拥有上面这些操作。 关于 StringRedisTemplate 可以参考这篇文章

通用操作

  • 判断是否有 key:redisTemplate.hasKey(key)
  • 给 key 添加过期时间:
    • redisTemplate.expire(key, timeout, unit)
    • 当数据结构为 String 时,redisTemplate.opsForValue().set(key, value, timeout, unit)
  • 模糊匹配:Set keys = redisTemplate.keys(key) // website:*
  • 删除 key:redisTemplate.delete(key)

1.String 类型

Redis RedisTemplate rt
set key value rt.opsForValue().set(“key”,“value”)
get key rt.opsForValue().get(“key”)
strlen key rt.opsForValue().size(“key”)
getset key value rt.opsForValue().getAndSet(“key”,“value”)
getrange key start end rt.opsForValue().get(“key”,start,end)
append key value rt.opsForValue().append(“key”,“value”)

PS:关于 redis 的基本命令可以参考这篇文章

2.Hash 类型

Redis RedisTemplate rt
hset key field value rt.opsForHash().put(“key”,“field”,“value”)
hmset key field1 value1 field2 value2… rt.opsForHash().putAll(“key”,map) //map是一 个集合对象
hexists key field rt.opsForHash().hasKey(“key”,“field”)
hgetall key rt.opsForHash().entries(“key”) //返回Map对象
hvals key rt.opsForHash().values(“key”) //返回List对象
hkeys key rt.opsForHash().keys(“key”) //返回List对象
hmget key field1 field2… rt.opsForHash().multiGet(“key”,keyList)
hsetnx key field value rt.opsForHash().putIfAbsent(“key”,“field”,“value”)
hdel key field1 field2 rt.opsForHash().delete(“key”,“field1”,“field2”)
hget key field rt.opsForHash().get(“key”,“field”)

3.List 类型

Redis RedisTemplate rt
lpush list node1 node2 node3… rt.opsForList().leftPush(“list”,“node”)
rt.opsForList().leftPushAll(“list”,list) //list是集 合对象
rpush list node1 node2 node3… rt.opsForList().rightPush(“list”,“node”)
rt.opsForList().rightPushAll(“list”,list) //list是集 合对象
lindex key index rt.opsForList().index(“list”, index)
llen key rt.opsForList().size(“key”)
lpop key rt.opsForList().leftPop(“key”)
rpop key rt.opsForList().rightPop(“key”)
lpushx list node rt.opsForList().leftPushIfPresent(“list”,“node”)
rpushx list node rt.opsForList().rightPushIfPresent(“list”,"node ")
lrange list start end rt.opsForList().range(“list”,start,end)
lrem list count value rt.opsForList().remove(“list”,count,“value”)
lset key index value rt.opsForList().set(“list”,index,“value”)

4.Set 类型

Redis RedisTemplate rt
sadd key member1 member2… rt.boundSetOps(“key”).add(“member1”,“me mber2”,…)
rt.opsForSet().add(“key”, set) //set是一个集合 对象
scard key rt.opsForSet().size(“key”)
sidff key1 key2 rt.opsForSet().difference(“key1”,“key2”) //返回一个集合对象
sinter key1 key2 rt.opsForSet().intersect(“key1”,“key2”)//同上
sunion key1 key2 rt.opsForSet().union(“key1”,“key2”)//同上
sdiffstore des key1 key2 rt.opsForSet().differenceAndStore(“key1”,“ke y2”,“des”)
sinter des key1 key2 rt.opsForSet().intersectAndStore(“key1”,"key2 ",“des”)
sunionstore des key1 key2 rt.opsForSet().unionAndStore(“key1”,“key2”," des")
sismember key member rt.opsForSet().isMember(“key”,“member”)
smembers key rt.opsForSet().members(“key”)
spop key rt.opsForSet().pop(“key”)
srandmember key count rt.opsForSet().randomMember(“key”,count)
srem key member1 member2… rt.opsForSet().remove(“key”,“member1”,“member2”)

5.ZSet 类型

方法 含义
Boolean add(K key, V value, double score) 为有序集合添加元素. 如果 value 已经存在,则更新
score 表示权重,用于排序,值越小,排序越靠前(由小到大)
key 不存在时,直接新增。成功插入时返回 true,失败时返回 false
Long zCard(K key) 获取集合的大小
Long size(K key) 获取集合的大小,底层调用 zCard
Long rank(K key, Object o) 获取元素 o 在有序集合中的索引(即在集合中的排名,也可用来判断元素是否存在)
Double incrementScore(K key, V value, double delta) 手动设置集合中指定值的权重
Double score(K key, Object o) 获取集合中指定元素的权重
Set range(K key, long start, long end) 获取有序的集合中指定索引范围的值,索引从0开始,-1 表示倒数第一个元素
Set rangeByScore(K key, double min, double max) 根据权重范围查询
Set rangeByScore(K key, double min, double max, long offset, long count) offset 表示偏移量,count 表示需要获取的个数
Long count(K key, double min, double max) 获取权重在 [min,max] 直接的元素个数
Long remove(K key, Object… values) 删除集合中指定的元素(value)
Long removeRange(K key, long start, long end) 删除集合中指定索引范围内的元素
Long removeRangeByScore(K key, double min, double max) 删除集合中指定权重范围内的元素
Long unionAndStore(K key, K otherKey, K destKey) 取 Key 和 otherKey 的交集,结果放到 destKey
Long unionAndStore(K key, Collection<K> otherKeys, K destKey) 取 Key 和 otherKeys(多个key) 的交集,结果放到 destKey
  •  

猜你喜欢

转载自blog.csdn.net/qq_33762302/article/details/114274756