redis的五种常用类型在java中的基本操作

一、redis的字符串操作

redisTemplate.opsForValue().set("key1", "value1");
// 注意使用了默认JDK的序列化器,所以Redis保存时不是整数,不能运算
redisTemplate.opsForValue().set("int_key", "1");
stringRedisTemplate.opsForValue().set("int", "1");
// 使用运算  值为2
stringRedisTemplate.opsForValue().increment("int", 1);
// 获取底层jedis连接
Jedis jedis = (Jedis) stringRedisTemplate.getConnectionFactory().getConnection().getNativeConnection();
// 减一操作 stringRedisTemplate不支持减法,所以获取底层的连接。值为1
jedis.decr("int");

redis客户端查看,get key1; get int_key; get int
二、操作redis散列数据类型

 Map<String, String> hashdemo = new HashMap<String, String>();
 hashdemo.put("hk1", "hv1");
 hashdemo.put("hk2", "hv2");
 // 存入一个散列数据类型
 stringRedisTemplate.opsForHash().putAll("hashdemo", hashdemo);
 // 新增一个字段
 stringRedisTemplate.opsForHash().put("hashdemo", "hk3", "hv3");
 // 绑定散列操作的key,可以连续对同一个散列数据类型进行操作
 BoundHashOperations hashOps = stringRedisTemplate.boundHashOps("hashdemo");
 // 删除2个字段
 hashOps.delete("hk1", "hk2");
 // 新增1个字段
 hashOps.put("hk4", "hv4");

redis客户端查看, 获取所有的key值:hkeys hashdemo;获取所有的value值:hvals hashdemo;获取单个值:hget hashdemo hk1
三、redis的链表操作

// 链表从左到右顺序为v10,v8,v6,v4,v2
stringRedisTemplate.opsForList().leftPushAll("list1", "v2", "v4", "v6", "v8", "v10");
// 链表从左到右顺序为v1,v2,v3,v4,v5,v5
stringRedisTemplate.opsForList().rightPushAll("list2", "v1", "v2", "v3", "v4", "v5", "v6");
//  绑定链表list2,连续操作
BoundListOperations listOperations = stringRedisTemplate.boundListOps("list2");
// 取出v6
Object result1 = listOperations.rightPop();
// redis从0开始计算,获取第二个值v2
Object result2 = listOperations.index(1);
// 从左边插入链表
listOperations.leftPush("v0");
// 求链表长度
Long size = listOperations.size();
// 求链表下标区间成员,整个链表下标范围为0到size-1,不取最后一个元素
List elements = listOperations.range(0, size - 2);

redis客户端操作,查看list2的值
lrange list2 0 -1
四、操作redis无须集合

// v1 重复2次,因为集合不允许重复,所以只是插入5个成员到集合中
stringRedisTemplate.opsForSet().add("set1", "v1", "v2", "v3", "v4", "v5");
stringRedisTemplate.opsForSet().add("set2", "v2", "v4", "v6", "v8");
// 绑定set1进行连续操作
BoundSetOperations setOperations = stringRedisTemplate.boundSetOps("set1");
// 增加2个元素
setOperations.add("v6", "v7");
// 删除2个元素
setOperations.remove("v1", "v7");
// 返回所有元素
Set set1 = setOperations.members();
// 求成员数
Long size = setOperations.size();
// 求交集
Set inter = setOperations.intersect("set2");
// 求交集,保存到inter集合中
setOperations.intersectAndStore("set2", "inter");
// 求差集
Set diff = setOperations.diff("set2");
// 求差集,并用diff保存
setOperations.diffAndStore("set2", "diff");
// 求并集
Set Uion = setOperations.union("set2");
// 求并集,并用union保存
setOperations.unionAndStore("set2", "union");

redis客户端查询 smenbers union
五、操作redis有序集合

Set<ZSetOperations.TypedTuple<String>> typedTupleSet = new HashSet<>();
for (int i = 1; i <= 9; i++) {
    // 分数
    double score = i * 0.1;
    // 创建一个TypedTuple对象,存入值和分数
    ZSetOperations.TypedTuple<String> typedTuple = new DefaultTypedTuple<String>("value" + i, score);
    typedTupleSet.add(typedTuple);
}
// 往有序集合插入元素
stringRedisTemplate.opsForZSet().add("zset1", typedTupleSet);
// 绑定zset1有序集合操作
BoundZSetOperations<String, String> zsetOps = stringRedisTemplate.boundZSetOps("zset1");
// 增加一个元素
zsetOps.add("value10", 0.26);
Set<String> setRange = zsetOps.range(1, 6);
// 按分数排序获取有序集合
Set<String> setScore = zsetOps.rangeByScore(0.2, 0.6);
// 定义值范围
RedisZSetCommands.Range range = new RedisZSetCommands.Range();
range.gt("value3");// 大于value3
// range.gte("value3");// 大于等于value3
// range.lt("value8");// 小于value8
range.lte("value8");// 小于等于value8
// 按值排序,请注意这个排序是按字符串排序
Set<String> setLex = zsetOps.rangeByLex(range);
// 删除元素
zsetOps.remove("value9", "value2");
// 求分数
Double score = zsetOps.score("value8");
// 在下标区间下,按分数排序,同时返回value和score
Set<ZSetOperations.TypedTuple<String>> rangeSet = zsetOps.rangeWithScores(1, 6);
// 在分数区间下,按分数排序,同时返回value和score
Set<ZSetOperations.TypedTuple<String>> scoreSet = zsetOps.rangeByScoreWithScores(1, 6);
// 按从大到小排序
Set<String> reverseSet = zsetOps.reverseRange(2, 8);

redis客户端查询 zrange zset1 0 10

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值