Linux下使用Redis教程(一)或者看一下https://www.imooc.com/article/34559個地址
2018-05-24 12:56:15 大道之簡 閱讀數 2338更多
版權聲明:本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
本文鏈接:https://blog.csdn.net/HcJsJqJSSM/article/details/80432706
之前安裝過也使用過的的Redis的,總結一下安裝的過程吧。(其實和Nginx的的是一樣的安裝方法,C編寫,編譯安裝,稍微麻煩一下,但是速度快。對比的Tomcat的(JAVA))
環境搭建:CentesOS 7,redis-3.0.0.tar.gz,SecureCRT。RedisClient客戶端.
首先將下載的安裝包上傳的的Linux下,獲取官網的的的Redis的對應版本的鏈接,使用了wget的命令都可以的。
由於redis的的是由Ç語言開發的,所以要安裝一下GCC的編譯環境。(使用Yum在線安裝)
yum install -y gcc
檢查一下是否安裝成功了.
rpm -qa |grep gcc
然后解壓到指定的目錄(這里沒有指定解壓目錄,就是當前所在目錄)
wget http://download.redis.io/releases/redis-3.0.0.tar.gz
tar -zxvf redis-3.0.0.tar.gz
進入到指定剛才解壓的目錄里面
cd redis-3.0.0
然后就是編譯了
使用 make命令.
make
接下來將redis的的安裝到指定的目錄里面(下面的那個redis的的不需要提前創建的)
使用PREFIX = / usr / local / src / redis安裝至指定目錄里面.
make install PREFIX=/usr/local/src/redis
來到在/ usr / local / src/ redis的目錄下
進入倉目錄里面發現沒有redis.conf的配置文件。
將Redis的的-3.0.0的目錄下的redis.conf復制到剛才的倉目錄下的。
cp redis.conf / usr / local / src / redis / bin
cd / usr / local / src / redis / bin
接下來就是啟動的Redis的了的.Redis的啟動的有前台啟動和后台啟動的兩種方式的。
首先介紹一下前台啟動:
cd bin
./redis-server
前台啟動的弊端:這個窗口不能關閉的如果關閉了Redis的的服務就關閉了的。
使用后端啟動的方式。先將前台啟動的方式給關閉了的。
./redis-cli -p 6379(端口號,不是進程號)shutdown
修改redis.conf下的配置文件
vim redis.conf
后台啟動:BIN目錄下。
./redis-server ./redis.conf
查看啟動進程:(掛載配置文件)
ps -ef | grep -i redis
至此Redis的的的啟動就完成了的。
如果要使用遠程連接,那就開放端口6379。
firewall-cmd --zone = public --add-port = 6379 / tcp --permanent
Redis的的的倉目錄下的幾個文件介紹
Redis的的基准測試:性能測試工具。
Redis的的檢查,AOF:檢查修復AOF文件
Redis的的檢查轉儲:檢查快照持久文件
Redis的的-CLI:Redis的的的客戶端
Redis的的服務器:redis的的的服務器啟動命令.
上面是完成的Redis的服務啟動的。下面就啟動客戶端連接服務器的。
cd bin
使用一下:(設置值和獲取值)
退出客戶端連接的方式:(exit)
遠程客戶端連接:(redis設置登錄密碼)
vim redis.conf
注意連接遠程Redis:(例如連接阿里雲,華為雲上的Redis)
①:修改Redis.conf(關閉安全模式)
②:注釋掉默認的127.0.0.1的那個是默認本地可以訪問的,修改為0.0.0.0,確保所有ip可以訪問的.
③: firewall-cmd開啟6379端口.等會雲服務平台,修改安全組規則.
firewall-cmd --zone=public --add-port=6379/tcp --permanen(后面的參數是永久生效的)
firewall-cmd --reload
④:添加一個連接密碼
二:Windows下安裝Redis.
官網上對於Redis For Windows的安裝沒看到相關的介紹.
GitHub上是提供Redis的Windows的版本的.鏈接.
下載解壓至本地盤符下.
雙擊redis-server.exe啟動服務端.redis-cli.exe啟動客戶端.但是這個時候啟動的時候,Redis服務端閃退.
解決方法:
①:在cmd下運行而不是雙擊redis-server.exe:
②:或者是設置一下占用的內存.
redis-server.exe redis.windows.conf --maxmemory 200m
修改配置文件redis.windows.conf :maxmemory 209715200(單位字節).
現在在cmd下運行.
啟動客戶端. 進行基本命令的操作使用.
三: JavaAPI測試Redis的讀寫性能.
3.1 首先是導入兩個jar包.
3.2 測試Redis的10w數據寫讀耗費時間.使用了流水線技術.批量處理.本地測試.
- import java.time.Duration;
- import java.time.Instant;
- import java.util.List;
- import redis.clients.jedis.Jedis;
- import redis.clients.jedis.JedisPool;
- import redis.clients.jedis.JedisPoolConfig;
- import redis.clients.jedis.Pipeline;
- /**
- * title: RedisDemo
- * author:
- * date:
- * description:測試Redsi的10萬數據寫讀耗費時間
- * 開啟流水線測試信息.
- */
- public class RedisDemo {
- public static void main(String[] args) {
- JedisPoolConfig poolConfig=new JedisPoolConfig();
- // 最大空閑連接數
- poolConfig.setMaxIdle(50);
- // 最大連接數
- poolConfig.setMaxTotal(100);
- // 最大等待毫秒數
- poolConfig.setMaxWaitMillis(20000);
- // 使用配置連接池
- JedisPool pool=new JedisPool(poolConfig, "localhost", 6379);
- // 獲取Redis連接
- Jedis jedis=pool.getResource();
- // 配置客戶端登錄密碼
- jedis.auth("123456");
- Instant start=Instant.now();
- // 開啟流水線
- Pipeline pipeline=jedis.pipelined();
- // 測試10萬字符串數據的寫入和讀取
- for(int i=1;i<=100000;i++){
- // 設置key
- pipeline.set("pipe-key-"+i, i+"");
- // 讀取key
- pipeline.get("pipe-key-"+i);
- }
- // 返回結果.將執行過的命令以list集合返回結果.
- List<Object> result=pipeline.syncAndReturnAll();
- // 關閉連接
- jedis.close();
- pool.close();
- Instant end=Instant.now();
- System.out.println("一共運行了"+result.size()+"個命令");
- System.out.println("計算耗時:"+Duration.between(start, end).toMillis()+"毫秒");
- }
- }
運行結果:需要時間平均不到1s.
查看Redis的key數目.是一共10w條數據.
3.3 測試Redis的1秒寫入.使用了流水線技術批量處理,而不是一條一條的發送命令.本地測試.PC內存8G
- import java.time.Duration;
- import java.time.Instant;
- import redis.clients.jedis.Jedis;
- import redis.clients.jedis.JedisPool;
- import redis.clients.jedis.JedisPoolConfig;
- import redis.clients.jedis.Pipeline;
- /**
- * title: RedisDemo
- * @author:
- * date:
- * description:測試Redsi的每秒讀寫
- * 之前是一條一條命令測試的.
- * 開啟流水線,批量執行.
- */
- public class RedisDemo {
- public static void main(String[] args) {
- JedisPoolConfig poolConfig=new JedisPoolConfig();
- // 最大空閑連接數
- poolConfig.setMaxIdle(50);
- // 最大連接數
- poolConfig.setMaxTotal(100);
- // 最大等待毫秒數
- poolConfig.setMaxWaitMillis(20000);
- // 使用配置連接池
- JedisPool pool=new JedisPool(poolConfig, "localhost", 6379);
- // 獲取Redis連接
- Jedis jedis=pool.getResource();
- // 配置客戶端登錄密碼
- jedis.auth("123456");
- Instant start=Instant.now();
- // 開啟流水線
- Pipeline pipeline=jedis.pipelined();
- int i=0;
- // 測試10萬字符串數據的寫入和讀取
- while(true){
- // 設置key
- Instant end=Instant.now();
- if(Duration.between(start, end).toMillis()>1000){
- break;
- }
- i++;
- pipeline.set("pipe-key-sed-"+i, i+"");
- }
- // 關閉連接
- jedis.close();
- pool.close();
- System.out.println("redis每秒寫入"+i+"次");
- }
- }
運行結果:平均每秒20W+.
此時,無論是程序中使用Jedis連接還是RedisClient連接都是可以的.