E028Web学习笔记-Redis

一、概述

1、简介

Redis 是完全开源免费的,遵守BSD协议,是一个高性能的NOSQL系列的非关系型key-value数据库;

数据存储在内存中的数据库;

 

2、关系型数据库与非关系型数据库

关系型数据库:

1、数据之间有关联关系;
2、数据存储在电脑硬盘文件上;

非关系型数据库:

1、数据之间没有关联关系;
2、数据存储在电脑内存上;

 

3、问题

当经常查询一些不太经常变化的数据,操作关系型数据库非常耗时!

解决方案:

使用缓存思想解决此问题,第一次查询数据的时候从数据库查询,然后放入缓存,再返回查询结果, 等以后查询的时候直接在缓存里面返回结果即可。

 

二、Redis下载安装和简介

下载地址:

https://github.com/MicrosoftArchive/redis/releases

安装:

直接解压即可;

重要文件简介:

redis.windows.conf:配置文件;

redis-server.exe:服务器端;

redis-cli.exe:客户端;

 

三、命令操作

1、Redis的数据结构

key-value:键值对结构的数据;

其中key是字符串,value有五种数据类型:

1、字符串类型:string
2、哈希类型:hash
3、列表类型:list
-- 列表允许重复,有序;
4、集合类型:set
-- 集合不允许重复,无序;
5、有序集合类型:sortedset
-- 集合不允许重复,有序;

 

2、字符串类型

存储

set key value

获取

get key

删除

del key

代码演示:

 

3、哈希类型

存储

hset key field value

获取

hget key field

删除

hdel key field

代码演示

 

4、列表类型(list)

可以添加一个元素到列表的头部(左边)或者尾部(右边);

存储

1、将元素添加到列表左边:lpush key value;
2、将元素添加到列表右边:rpush key value;

获取

1、获取一个范围的元素:lrange key start end
-- 获取所有start end是0 -1

删除

1、删除列表最左边的元素并将该元素返回:lpop key
2、删除列表最右边的元素并将该元素返回:rpop key

代码演示

 

5、集合类型set

存储

sadd key value

获取

smembers key:获取set集合的所有元素;

删除

srem key value:删除set集合中的某个元素;

代码演示

 

6、有序集合类型sorted set

存储

zadd key score value:score分数,元素按照分数大小排序;

获取

查询某一范围的元素:zrange key start end
-- 获取所有start end是0 -1

删除

zrem key value:删除某一元素

代码演示

 

7、通用命令

1、查询所有的键:keys *
2、获取键对应的数据类型:type key
3、删除指定的键值对:del key

 

四、持久化

1、说明

Redis是一个内存数据库,数据临时存放在内存中,我们可以将数据保存到硬盘中;

 

2、两种持久化机制

RDB

默认,不需要进行配置,默认使用这种机制;

在一定的间隔时间中,检测key的变化情况,然后持久化数据;

AOF

日志操作记录方式,可以记录每一条命令的操作,可以在每次操作后,持久化数据;

 

3、EDB(有可能丢失数据)

使用步骤

第一步:编辑redis.windows.conf文件

编辑redis.windows.conf文件:(将下面的数值进行修改即可)
#   after 900 sec (15 min) if at least 1 key changed
15分钟后,至少有1个keys发生了改变,就进行保存
save 900 1

#   after 300 sec (5 min) if at least 10 keys changed
5分钟后,至少有10个keys发生了改变,就进行保存
save 300 10

#   after 60 sec if at least 10000 keys changed
1分钟后,至少有10000个keys发生了改变,就进行保存
save 60 10000

第二步:重启服务器,指定配置文件

D:\MySoft\Redis\Redis-x64-3.0.504>redis-server.exe redis.windows.conf

 

4、AOF(影响性能)

使用步骤

第一步:编辑redis.windows.conf文件

1、开关
默认:appendonly no(关闭AOF)
改成:appendonly yes(开启AOF)
2、频率
appendfsync always:每次操作进行持久化;
appendfsync everysec:(默认)每秒进行持久化;
appendfsync no:不进行持久化;

第二步:重启服务器,指定配置文件

D:\MySoft\Redis\Redis-x64-3.0.504>redis-server.exe redis.windows.conf

 

五、Java代码操作Redis(使用Jedis)

1、Jedis简介

使用Java操作Redis的工具;

 

2、快速入门

使用步骤

第一步:下载jedis相关,导入jar包;

下载地址(两个文件):

https://mvnrepository.com/artifact/redis.clients/jedis

https://mvnrepository.com/artifact/org.apache.commons/commons-pool2

第二步:获取连接;

第三步:进行操作;

第四步:关闭连接;

代码演示

package redis;

import redis.clients.jedis.Jedis;

public class MyRedis {
    public static void main(String[] args) {
        //1、获取连接
        Jedis jedis = new Jedis("localhost",6379);
        //2、进行操作
        jedis.set("name","zibo");
        //3、关闭连接
        jedis.close();
    }
}

运行结果(存储数据成功了)

 

3、操作String、hash、list、set和sorted set

与命令行操作极为类似,不再演示;

文档教程地址:https://www.runoob.com/redis/redis-java.html

补充:

setex(String key, int seconds, String value):可以指定键值对保存的时间,过时之后自动删除;

 

六、Jedis连接池(JedisPool)

1、使用步骤

第一步:创建JedisPool对象;

第二步:调用getResource()方法获取Jedis连接;

第三步:使用jedis;

第四步:归还jedis;

代码演示

package redis;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

public class MyRedis {
    public static void main(String[] args) {
        //第一步:创建JedisPool对象;
        //无参,默认参数
        JedisPool pool = new JedisPool();
        //带参
        //1、创建配置对象;
//        JedisPoolConfig config = new JedisPoolConfig();
//        config.setMaxTotal(50);
//        config.setMaxIdle(10);
//        JedisPool pool = new JedisPool(config,"localhost",6379);
        //第二步:调用getResource()方法获取Jedis连接;
        Jedis jedis = pool.getResource();
        //第三步:使用jedis
        jedis.set("name","zibo");
        //第四步:归还jedis
        jedis.close();
    }
}

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章