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();
    }
}

 

 

 

 

 

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