Redis基本类型和操作
Redis 是一个开源的内存数据结构存储系统,它可以用作数据库、缓存和消息中间件。Redis 支持多种数据结构,包括字符串(String)、哈希(Hash)、列表(List)、集合(Set)以及有序集合(Sorted Set)。以下是这些类型的简介及相应的基本操作。
1. 字符串(String)
单个key-value的存和取
- SET key value:设置指定键的值。
- GET key:获取指定键的值。
多个key-value的存和取
- MSET key value [key value …]
- MGET key [key …]
删除key
-
DEL key [key …]
-
INCR key:将键对应的整数值加一。
-
DECR key:将键对应的整数值减一。
自增自减
-
incr key:对key的结果进行自增
-incrby key 3:对key的结果一次增加3 -
decr key:对key的结果进行自减
-
decrby key 3:对key的结果一次减3
2. 哈希(Hash)
- HSET key field value:为哈希表中的字段赋值。
- HGET key field:获取哈希表中字段的值。
- HGETALL key:获取哈希表中所有的字段和值。
- HDEL key field [field …]:删除
3. 列表(List)
- LPUSH key value:将一个或多个值插入到列表头部。
- RPUSH key value:将一个或多个值插入到列表尾部。
- LRANGE key start stop:从列表中获取一段元素。 (stop是-1的话就是查到最后的一个数据)
- LPOP key:从栈顶移除数据(一次移除一个)
- LLEN key:查看列表的长度
- DEL key:删除当前字段
4. 集合(Set 不能有重复的数据,无序)
- SADD key member:向集合添加一个或多个成员。
- SMEMBERS key:获取集合中的所有成员。
- SISMEMBER key member:检查成员是否属于该集合。
- SREM key member [member …]:删
- DEL key:删除字段
5. 有序集合(Sorted Set)(ZSet)
- ZADD key [NX|XX] [CH] [INCR] score member:向有序集合添加一个或多个成员。(例如:eg: zadd myset 1 rose 添加rose到myset集合排序为1)
- ZRANGE key start stop [WITHSCORES]:返回有序集中指定区间内的成员,查询。
- ZREM key member:移除有序集中的一个或多个成员。
Maven依赖
为了在Java项目中使用Redis,你需要添加Jedis作为依赖项。Jedis是Java语言的一个Redis客户端库。在你的pom.xml
文件中添加如下依赖:
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>4.0.0</version>
</dependency>
Java操作示例代码
以下是一些基于Jedis的Java操作示例代码:
初始化连接
import redis.clients.jedis.Jedis;
public class RedisExample {
private Jedis jedis;
public RedisExample() {
// 连接到本地的 Redis 服务
jedis = new Jedis("localhost", 6379);
System.out.println("连接成功");
}
}
单例操作redis
用连接池操作
字符串操作
public void stringOperations() {
// 设置数据
jedis.set("tutorial-name", "Redis tutorial");
// 获取数据并打印出来
String name = jedis.get("tutorial-name");
System.out.println(name); // 输出: Redis tutorial
}
哈希操作
public void hashOperations() {
// 存储数据到哈希表 user 中
jedis.hset("user:1000", "name", "John Doe");
jedis.hset("user:1000", "age", "30");
// 获取数据并打印出来
Map<String, String> user = jedis.hgetAll("user:1000");
System.out.println(user); // 输出: {name=John Doe, age=30}
}
列表操作
public void listOperations() {
// 向列表左侧添加数据
jedis.lpush("tasks", "task1");
jedis.lpush("tasks", "task2");
// 向列表右侧添加数据
jedis.rpush("tasks", "task3");
// 获取列表的数据并打印出来
List<String> tasks = jedis.lrange("tasks", 0, -1);
System.out.println(tasks); // 输出: [task2, task1, task3]
}
集合操作
public void setOperations() {
// 添加元素到集合
jedis.sadd("languages", "Java");
jedis.sadd("languages", "Python");
// 获取集合的所有元素
Set<String> languages = jedis.smembers("languages");
System.out.println(languages); // 输出: [Java, Python]
}
有序集合操作
public void sortedSetOperations() {
// 添加元素到有序集合
jedis.zadd("students", 80, "Alice");
jedis.zadd("students", 90, "Bob");
// 获取有序集合的所有元素
Set<String> students = jedis.zrange("students", 0, -1);
System.out.println(students); // 输出: [Alice, Bob]
}
部分内容由AI大模型生成,注意识别!