3.redis数据结构和常用命令(二)
1.字符串:
set key value :设置键值对
java程序中:redisTemplate.opsForValue.set(“key”,“value”)
get key :通过键取值
java程序中:redisTemplate.opsForValue.get(“key”)
del key:删除键值对
java程序中:redisTemplate.opsForValue.delete(“key”)
strlen key :求长度
java程序中:redisTemplate.opsForValue.size(“key”)
getset key value :修改key原来的值
java程序中:redisTemplate.opsForValue.getAndSet(“key”,“value”)
getrange key start end :获取子串 (redis元素下标按数组来算)
java程序中:redisTemplate.opsForValue.get(“key”,start,end)
append key value:将value追加到key原来的值
java程序中:redisTemplate.opsForValue.append(“key”,“value”)
简单的加减运算:(不支持乘除运算)
incr key :在原字段加1
java程序中:redisTemplate.opsForValue.increment(“key”,1)
incbyr key increment:在原字段加整数increment
java程序中:redisTemplate.opsForValue.increment(“key”,increment)
decr key:在原字段减1
java程序中:redisTemplate.getConnectionFactory().getConnection.decr(redisTemplate.getKeySerializer().serialize(“key”))
decrby key decrment:在原字段减整数decrement
redisTemplate.getConnectionFactory().getConnection.decr(redisTemplate.getKeySerializer().serialize(“key”),decrement)
incrbyfloat key increment:在原字段加浮点数increment
注意:1如果一开始就设置key为浮点数,那么接下来的所有操作都会失败
2所有关于减法的方法,原有值都必须是整数
2.Zset
1. 有序且独一无二的string元素集合集合,元素的排序是根据分值的大小排序
zadd key score1 value1 [score2 value2]:增加成员
zcard key:获取成员数
zcount key min max:根据分数区间返回成员数
zinterstore des numKeys key1 [key2]:将numKeys个集合的交集保存到des
zlexcount key min max:返回成员在min和max的成员数
zrange key start stop [withscores]:根据分数值返回成员,withscores表示连同分数一起返回
zrevrange key start stop [withscores]:与zrange相同,只是排序从大到小
zrank key member:求成员的排行
zscore key member:返回成员的分数
zrangebylex key min max:根据成员的大小排序
zrangebyscore key min max [withscore]:根据分数大小排序
zrevrange key start stop [withscores]
2.在java程序中
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); RedisTemplate redisTemplate = applicationContext.getBean(RedisTemplate.class); // Spring提供接口TypedTuple操作有序集合 Set<TypedTuple> set1 = new HashSet<TypedTuple>(); Set<TypedTuple> set2 = new HashSet<TypedTuple>(); int j = 9; for (int i = 1; i <= 9; i++) { j--; // 计算分数和值 Double score1 = Double.valueOf(i); String value1 = "x" + i; Double score2 = Double.valueOf(j); String value2 = j % 2 == 1 ? "y" + j : "x" + j; // 使用Spring提供的默认TypedTuple——DefaultTypedTuple TypedTuple typedTuple1 = new DefaultTypedTuple(value1, score1); set1.add(typedTuple1); TypedTuple typedTuple2 = new DefaultTypedTuple(value2, score2); set2.add(typedTuple2); } // 将元素插入有序集合zset1 redisTemplate.opsForZSet().add("zset1", set1); redisTemplate.opsForZSet().add("zset2", set2); // 统计总数 Long size = null; size = redisTemplate.opsForZSet().zCard("zset1"); // 计分数为score,那么下面的方法就是求3<=score<=6的元素 size = redisTemplate.opsForZSet().count("zset1", 3, 6); Set set = null; // 从下标一开始截取5个元素,但是不返回分数,每一个元素是String set = redisTemplate.opsForZSet().range("zset1", 1, 5); printSet(set); // 截取集合所有元素,并且对集合按分数排序,并返回分数,每一个元素是TypedTuple set = redisTemplate.opsForZSet().rangeWithScores("zset1", 0, -1); printTypedTuple(set); // 将zset1和zset2两个集合的交集放入集合inter_zset size = redisTemplate.opsForZSet().intersectAndStore("zset1", "zset2", "inter_zset"); // 区间 Range range = Range.range(); range.lt("x8");// 小于 range.gt("x1");// 大于 set = redisTemplate.opsForZSet().rangeByLex("zset1", range); printSet(set); range.lte("x8");// 小于等于 range.gte("x1");// 大于等于 set = redisTemplate.opsForZSet().rangeByLex("zset1", range); printSet(set); // 限制返回个数 Limit limit = Limit.limit(); // 限制返回个数 limit.count(4); // 限制从第五个开始截取 limit.offset(5); // 求区间内的元素,并限制返回4条 set = redisTemplate.opsForZSet().rangeByLex("zset1", range, limit); printSet(set); // 求排行,排名第1返回0,第2返回1 Long rank = redisTemplate.opsForZSet().rank("zset1", "x4"); System.err.println("rank = " + rank); // 删除元素,返回删除个数 size = redisTemplate.opsForZSet().remove("zset1", "x5", "x6"); System.err.println("delete = " + size); // 按照排行删除从0开始算起,这里将删除第排名第2和第3的元素 size = redisTemplate.opsForZSet().removeRange("zset2", 1, 2); // 获取所有集合的元素和分数,以-1代表全部元素 set = redisTemplate.opsForZSet().rangeWithScores("zset2", 0, -1); printTypedTuple(set); // 删除指定的元素 size = redisTemplate.opsForZSet().remove("zset2", "y5", "y3"); System.err.println(size); // 给集合中的一个元素的分数加上11 Double dbl = redisTemplate.opsForZSet().incrementScore("zset1", "x1", 11); redisTemplate.opsForZSet().removeRangeByScore("zset1", 1, 2); set = redisTemplate.opsForZSet().reverseRangeWithScores("zset2", 1, 10); printTypedTuple(set);
- Redis 数据结构 和 常用命令
- 3.redis数据结构和常用命令(三)
- Redis几种数据结构常用命令整合
- Redis 5种数据结构常用命令
- RedisTemplate访问Redis数据结构(介绍和常用命令)
- redis学习(二) redis数据结构介绍以及常用命令
- Redis中的数据结构与常用命令
- 2.Redis数据结构常用命令
- redis 五大数据结构__常用命令
- Redis基础、高级特性与性能调优-Redis的数据结构和相关常用命令
- Redis数据结构及其常用命令
- 详细讲解redis数据结构(内存模型)以及常用命令
- Redis实用教程之三---Redis数据结构与常用命令
- Redis常用命令入门5:有序集合类型
- 初识redis之常用String与Hash命令
- redis常用命令
- Redis(一) Redis常用命令
- 【redis】redis常用命令
- redis 常用命令
- Redis5种数据结构的内部编码及应用场景和基本命令