1.Redis是什么?有什么用?
用作数据库、缓存、流引擎和消息代理的开源内存数据存储。
2.Redis怎么用
1.一些基本的命令
# 远程连接
redis-cli -h host -p port -a password
## 切换存储库 myRedis:1>
select 1
2. Redis的数据类型:
1. string
# key-value 的存储方式 set k v get k
set name nikaboy
get name
# 设置key的生存时间
expire name 20
# 删除
del keyname
2. hash
可以想象成 key - map<key,val>
# 设置值 hash类型
hmset nikaboy key1 val1
# 获取值key的key1字段的值
hmget nikaboy key1
## 获取key所有值
hgetall nikaboy
# 删除单个字段 删除 key 的 key1 字段
hdel nikaboy key1
#单个字段设置过期时间
虽然不能给set,hash的元素字段设置过期时间。但可以给整个hash或set设置过期时间
3. list
可重复的队列
# 存储数据 lpush 从左边开始添加数据,之前的数据向后移动 rpush 从右边开始添加数据
lpush nikaboy val1
rpush nikaboy val2
# 查看数据
lrange nikaboy 0 3 # 查看前四个数据
lindex nikaboy 0 # 查看指定index的数据
# 移除数据
lpop nikaboy # 弹出队列左边第一个数据
rpop nikaboy # 弹出队列右边第一个数据
# 查看队列长度
llen nikaboy
4. set
Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
# 添加元素
sadd nikaboy val1
# 查看
smembers nikaboy
# 删除一个元素
sadd nikaboy val1
5. sorted set
Redis 有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为集合中的成员进行从小到大的排序
# 添加元素
zadd nikaboy 1 val1
# 查看
zrange nikaboy 0 -1 # 查看所有元素
zrange nikaboy 0 -1 withscores # 查看所有元素包括分数
3.Redis项目中使用
Jedis的使用
Jedis是一个为Redis设计的Java客户端,旨在提高性能和易用性。
-
引入maven文件
<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>3.7.0</version> </dependency>
-
创建连接
// 普通方式创建链接 private Jedis jedis; @BeforeEach public void initJedis(){ jedis = new Jedis("127.0.0.1",6379); //设置密码 jedis.auth("123456"); // 选择库 jedis.select(0); }
//连接池的方式创建连接 private static JedisPool jedisPool; public static Jedis getJedisInstance(){ return jedisPool.getResource(); } static { JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); //最大连接数量 jedisPoolConfig.setMaxTotal(100); //最大空闲 jedisPoolConfig.setMaxIdle(100); //最小空闲 jedisPoolConfig.setMinIdle(0); jedisPoolConfig.setMaxWaitMillis(3000); jedisPool = new JedisPool(jedisPoolConfig, "127.0.0.1",6379, 6000, "123456"); }
-
string 类型
@Test
public void stringTest(){
//设置string 类型的 key-value 过期时间为1分钟
String result = jedis.set("hello", "hello redis", SetParams.setParams().ex(60L));
//存入数据
System.out.println(result); // OK
String hello = jedis.get("hello"); // hello redis
System.out.println(hello);
//删除key
jedis.del("hello");
}
- hash 类型
@Test
public void hashTest(){
jedis.hset("hashKey", "field-0", "value-0");
String val1 = jedis.hget("hashKey"