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);