【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 类型

RedisRedisTemplate rt
set key valuert.opsForValue().set(“key”,“value”)
get keyrt.opsForValue().get(“key”)
strlen keyrt.opsForValue().size(“key”)
getset key valuert.opsForValue().getAndSet(“key”,“value”)
getrange key start endrt.opsForValue().get(“key”,start,end)
append key valuert.opsForValue().append(“key”,“value”)

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

2.Hash 类型

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

3.List 类型

RedisRedisTemplate 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 indexrt.opsForList().index(“list”, index)
llen keyrt.opsForList().size(“key”)
lpop keyrt.opsForList().leftPop(“key”)
rpop keyrt.opsForList().rightPop(“key”)
lpushx list nodert.opsForList().leftPushIfPresent(“list”,“node”)
rpushx list nodert.opsForList().rightPushIfPresent(“list”,"node ")
lrange list start endrt.opsForList().range(“list”,start,end)
lrem list count valuert.opsForList().remove(“list”,count,“value”)
lset key index valuert.opsForList().set(“list”,index,“value”)

4.Set 类型

RedisRedisTemplate rt
sadd key member1 member2…rt.boundSetOps(“key”).add(“member1”,“me mber2”,…)
rt.opsForSet().add(“key”, set) //set是一个集合 对象
scard keyrt.opsForSet().size(“key”)
sidff key1 key2rt.opsForSet().difference(“key1”,“key2”) //返回一个集合对象
sinter key1 key2rt.opsForSet().intersect(“key1”,“key2”)//同上
sunion key1 key2rt.opsForSet().union(“key1”,“key2”)//同上
sdiffstore des key1 key2rt.opsForSet().differenceAndStore(“key1”,“ke y2”,“des”)
sinter des key1 key2rt.opsForSet().intersectAndStore(“key1”,"key2 ",“des”)
sunionstore des key1 key2rt.opsForSet().unionAndStore(“key1”,“key2”," des")
sismember key memberrt.opsForSet().isMember(“key”,“member”)
smembers keyrt.opsForSet().members(“key”)
spop keyrt.opsForSet().pop(“key”)
srandmember key countrt.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
  •  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值