Redis列表、集合、散列、有序集合操作
列表操作命令
存储值
左端存值语法:lpush key value [value …]
lpush list lily sandy

右端存值语法:rpush key value [value …]
rpush list tom kitty

索引存值语法:lset key index value
lset list 3 uto

弹出元素
左端弹出语法:lpop key

右端弹出语法:rpop key
rpop list

获取元素个数
语法:llen key
llen list

获取列表元素
两边获取语法:lrange key start stop
lpush users tom kitty land pony jack maddy
lrange users 0 3
// 获取所有
lrange users 0 -1
// 从右端索引
lrange users -3 -1

索引获取语法:lindex key index
lindex users 2

// 从右端获取
lindex users -5

删除元素
根据值删除语法:lrem key count value
// count=0 删除所有
lrem userids 0 111
// count > 0 从左端删除前count个
lrem userids 3 222
// count < 0 从右端删除前count个
lrem userids -3 222

范围删除语法:ltrim key start stop
// 只保留2-4之间的元素
ltrim list 2 4

集合操作命令
存储值
语法:sadd key member [member …]
// 这里有8个值(2个java),只存了7个
sadd langs java php c++ go ruby python kotlin java
获取元素
获取所有元素语法:smembers key
smembers langs
随机获取语法:srandmember langs count
srandmember langs 3

判断集合是否存在元素
语法:sismember key member
sismember langs go

获取集合元素个数
语法:scard key
scard langs

删除集合元素
语法:srem key member [member …]
srem langs ruby kotlin

弹出元素
语法:spop key [count]
spop langs 2

散列操作命令
存放键值
单个语法:hset key field value
hset user name javastack
多个语法:hmset key field value [field value …]
hmset user name javastack age 20 address china
不存在时语法:hsetnx key field value
hsetnx user tall 180

获取字段值
单个语法:hget key field
hget user age
多个语法:hmget key field [field …]
hmget user name age address
获取所有键与值语法:hgetall key
hgetall user
获取所有字段语法:hkeys key
hkeys user
获取所有值语法:hvals key
hvals user

判断字段是否存在
语法:hexists key field
hexists user address

获取字段数量
语法:hlen key
hlen user

递增/减
语法:hincrby key field increment
hincrby user tall -10

删除字段
语法:hdel key field [field …]
hdel user age

有序集合
存储值
语法:zadd key [NX|XX] [CH] [INCR] score member [score member …]
zadd footCounts 16011 tid 20082 huny 2893 nosy

获取元素分数
语法:zscore key member
zscore footCounts tid
获取排名范围排名语法:zrange key start stop [WITHSCORES]
// 获取所有,没有分数
zrange footCounts 0 -1
// 获取所有及分数
zrange footCounts 0 -1 Withscores
获取指定分数范围排名语法:zrangebyscore key min max [WITHSCORES] [LIMIT offset count]
zrangebyscore footCounts 3000 30000 withscores limit 0 1

增加指定元素分数
语法:zincrby key increment member
zincrby footCounts 2000 tid

获取集合元素个数
语法:zcard key
zcard footCounts

获取指定范围分数个数
语法:zcount key min max
zcount footCounts 2000 20000

删除指定元素
语法:zrem key member [member …]
zrem footCounts huny

获取元素排名
语法:zrank key member
zrank footCounts tid

列表Java操作
import java.util.List;
import redis.clients.jedis.Jedis;
public class Main {
public static void main(String[] args) {
Jedis jedis = new Jedis();
/**
* LPUSH LRANGE LINDEX RPOP LPOP LLEN LREM
*/
// jedis.lpush("color", "black");
// String color = jedis.lindex("color", 4);
// System.out.println(color);
printList(jedis);
// jedis.lpop("color");
// jedis.lpop("color");
// System.out.println(jedis.llen("color"));
jedis.lrem("color", -2, "red");
printList(jedis);
jedis.close();
}
private static void printList(Jedis jedis) {
// 打印列表
System.out.println("------打印列表----------");
List<String> result = jedis.lrange("color", 0, -1);
for (String str : result) {
System.out.println(str);
}
}
}
集合Java操作
import java.util.Set;
import redis.clients.jedis.Jedis;
public class RedisSet {
public static void main(String[] args) {
Jedis jedis = new Jedis();
// jedis.sadd("animal", "elephant","tiger","lion");
// jedis.srem("animal", "tiger");
Set<String> result = jedis.smembers("animal");
System.out.println(result.toString());
boolean isAnimal = jedis.sismember("animal", "dog");
System.out.println(isAnimal);
jedis.close();
}
}

本文详细介绍了Redis中列表、集合、散列和有序集合的操作命令,包括存储值、获取元素、删除元素、更新元素、计数以及Java操作等。对于每个数据结构,都提供了相应的操作示例,如列表的lpush、rpush、lrange,集合的sadd、smembers,散列的hset、hget,以及有序集合的zadd、zscore等。
249

被折叠的 条评论
为什么被折叠?



