Redis基本操作
欢迎光临我的博客[http://poetize.cn],前端使用Vue2,聊天室使用Vue3,后台使用Spring Boot
REmote DIctionary Server(Redis) 是一个key-value存储系统。
它通常被称为数据结构服务器
,因为值(value)可以是字符串 (String) , 哈希 (Hash) , 列表 (list) , 集合 (sets) 和 有序集合 (sorted sets) 等类型
。
1.Redis 数据类型
- key:字符串
- value:
- String:字符串
- hash:map
- list:linkedlist(列表,有序&可重复)
- set:集合,无序&不可重复
- sortedset:集合,自动排序
2.Redis 基本操作
- String
- 存:set key value
- 取:get key
- 删:del key
- hash(map)
- 存:hash key field value
- 取:hget key field , hgetall key
- 删:hdel key field
- list
- 存:lpush key value(加入左边),rpush key value(加入右边)
- 取:lrange key start end(范围获取)
- 删:lpop key(删左并返回),rpop key(删右并返回)
- set
- 存:sadd key value
- 取:smembers key(取所有)
- 删:srem key value(删除某一值)
- sortedset(按score排序)
- 存:zadd key score value
- 取:zrange key start end with scores
- 删:zren key value
- 通用命令
- keys * :查所有键
- type key:获取键对应value类型
- del key:删除指定key value
3.Java使用Redis
引入依赖
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
<version>2.4.2</version>
</dependency>
public class JedisTest {
/**
* 快速入门
*/
public void test1() {
//1. 获取连接
Jedis jedis = new Jedis("localhost", 6379);
//2. 操作
jedis.set("username", "zhangsan");
//3. 关闭连接
jedis.close();
}
/**
* string 数据结构操作
*/
public void test2() {
//1. 获取连接
Jedis jedis = new Jedis();//如果使用空参构造,默认值 "localhost",6379端口
//2. 操作
//存储
jedis.set("username", "zhangsan");
//获取
String username = jedis.get("username");
//可以使用setex()方法存储可以指定过期时间的 key value
jedis.setex("activecode", 20, "hehe");//将activecode:hehe键值对存入redis,并且20秒后自动删除该键值对
//3. 关闭连接
jedis.close();
}
/**
* hash 数据结构操作
*/
public void test3() {
//1. 获取连接
Jedis jedis = new Jedis();//如果使用空参构造,默认值 "localhost",6379端口
//2. 操作
// 存储hash
jedis.hset("user", "name", "lisi");
jedis.hset("user", "age", "23");
jedis.hset("user", "gender", "female");
// 获取hash
String name = jedis.hget("user", "name");
// 获取hash的所有map中的数据
Map<String, String> user = jedis.hgetAll("user");
// keyset
Set<String> keySet = user.keySet();
for (String key : keySet) {
//获取value
String value = user.get(key);
System.out.println(key + ":" + value);
}
//3. 关闭连接
jedis.close();
}
/**
* list 数据结构操作
*/
public void test4() {
//1. 获取连接
Jedis jedis = new Jedis();//如果使用空参构造,默认值 "localhost",6379端口
//2. 操作
// list 存储
jedis.lpush("mylist", "a", "b", "c");//从左边存
jedis.rpush("mylist", "a", "b", "c");//从右边存
// list 范围获取
List<String> mylist = jedis.lrange("mylist", 0, -1);
// list 弹出
String element1 = jedis.lpop("mylist");//c
String element2 = jedis.rpop("mylist");//c
// list 范围获取
List<String> mylist2 = jedis.lrange("mylist", 0, -1);
//3. 关闭连接
jedis.close();
}
/**
* set 数据结构操作
*/
public void test5() {
//1. 获取连接
Jedis jedis = new Jedis();//如果使用空参构造,默认值 "localhost",6379端口
//2. 操作
// set 存储
jedis.sadd("myset", "java", "php", "c++");
// set 获取
Set<String> myset = jedis.smembers("myset");
//3. 关闭连接
jedis.close();
}
/**
* sortedset 数据结构操作
*/
public void test6() {
//1. 获取连接
Jedis jedis = new Jedis();//如果使用空参构造,默认值 "localhost",6379端口
//2. 操作
// sortedset 存储
jedis.zadd("mysortedset", 3, "亚瑟");
jedis.zadd("mysortedset", 30, "后裔");
jedis.zadd("mysortedset", 55, "孙悟空");
// sortedset 获取
Set<String> mysortedset = jedis.zrange("mysortedset", 0, -1);
//3. 关闭连接
jedis.close();
}
/**
* jedis连接池使用
*/
public void test7() {
//0.创建一个配置对象
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(50); //最大连接数
config.setMaxIdle(10); //最大闲置个数
//1.创建Jedis连接池对象
JedisPool jedisPool = new JedisPool(config, "localhost", 6379);
//2.获取连接
Jedis jedis = jedisPool.getResource();
//3. 使用
jedis.set("hehe", "heihei");
//4. 关闭 归还到连接池中
jedis.close();
}
}