Part_one:Redis第一次接觸

来源:https://www.cnblogs.com/xujunkai/archive/2019/09/21/11563620.html
-Advertisement-
Play Games

1.redis學習 數據預設寫入到記憶體,如果斷電,伺服器宕機,redis進程掛掉,數據會丟失。 selenium操作瀏覽器時,要註意瀏覽器資源釋放,方式記憶體泄露,崩潰 mysql是文件型資料庫,預設持久化到硬碟上 redis 是記憶體型資料庫 2.redis安裝學習 yum安裝,最簡單,配置yum源, ...


1.redis學習

  • 數據預設寫入到記憶體,如果斷電,伺服器宕機,redis進程掛掉,數據會丟失。

  • selenium操作瀏覽器時,要註意瀏覽器資源釋放,方式記憶體泄露,崩潰

  • mysql是文件型資料庫,預設持久化到硬碟上

  • redis 是記憶體型資料庫

      數據預設寫入到記憶體,如果斷電,伺服器宕機,redis進程掛掉,數據會丟失selenium操作瀏覽器時,要註意瀏覽器資源釋放,方式記憶體泄漏,崩潰。
      with opne() 預設close關閉文件句柄
      word工具,額米有保存前,數據放在記憶體里,保存後持久化到磁碟上,永久存儲在mysql是文件型資料庫,預設持久化到磁碟上

2.redis安裝學習

  • yum安裝,最簡單,配置yum源,yum倉庫才可以
  • 源碼編譯安裝,指定安裝路徑,自定製第三方擴展模塊功能
  • rpm軟體包手動安裝,很爛,手動解決依賴關係,不適用
  • 小拓展:ctrl +alt + f1~f7 f1是圖形化(物理伺服器的Linux界面)

1.redis安裝步驟:

1.解決編譯安裝所需的依賴環境
yum install gcc patch libffi-devel python-devel  zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel openssl openssl-devel -y
2.在目標目錄下 ,下載源代碼包
wget http://download.redis.io/releases/redis-4.0.10.tar.gz

    解壓:tar -zxvf -redis-4.0.10.tar.gz
    
3.執行./configure --prefix=/opt/redis/   #釋放makefile,告訴gcc編譯器,redis的安裝路徑
    如果預設沒有configure腳本,出現了makefile,直接make&&make install 安裝即可
    
4.編譯且安裝
make && make install
  • 小拓展
#如果你發現雲伺服器被礦機攻擊,有一個進程占用100%CPU資源!
解決:
    kill -9  殺死進程
檢查定時任務
    crontab -l    檢查定時任務
    crontab -e    編輯定時任務文件,可以刪除,定時任務。
    
全局搜索病毒文件,刪除它(註意惡意病毒,篡改了文件名,瞭解即可)
    find / -name 病毒文件
    找到了 rm -rf 刪除
如果 刪除不掉,很有可能文件被加鎖了
    lsattr filename.txt
    chattr -a filename  #給文件去鎖

2.編譯完成後,即可使用redis

啟動redis服務:
    redis-server
直接這樣執行:
    會出現不安全情況,容易被攻擊

3.指定配置文件,Centos安全的啟動redis服務端

(1)redis沒有用戶概念,redis只有密碼
(2)redis預設在工作在保護模式下。不允許遠程任何用戶登錄的(protected-mode)
  • 更改啟動埠

    port 6380  #更改預設啟動埠
  • 添加redis密碼

    requirepass xxxxxx   #設置redis啟動密碼,xxxx是自定義的密碼
  • 開啟redis安全模式

    protected-mode yes   #打開保護模式
- 示例演示 important!!!
1.第一步
[root@xujunk safe_conf]#vim /safe_conf/redis.conf
#在redis.conf配置信息如下
    bind 127.0.0.1
    protected-mode yes
    port 6379
    requirepass  haohaio
    daemonize yes
    pidfile /var/run/redis_6379.pid
    loglevel notice
    logfile ""

2.用自己配置好redis.conf 開啟redis
[root@xujunk safe_conf]#redis-server /opt/my_redis/redis-4.0.10/safe_conf/redis.conf

3.查看redis啟動狀態:
[root@xujunk safe_conf]#ps -ef |grep redis

4.redis-cli啟動,haohaiyou是密碼
[root@xujunk safe_conf]#redis-cli -p 6400 -h 127.0.0.1 -a haohaiyou

4.過濾出配置文件有益的信息(取出空白行和註釋行)

  • redis.conf
#找出註釋行的數據
grep "^#" redis.conf
#找出空行
grep  "^$"
#找出除空白行  和 註釋行 以外的行
[root@xujunk redis-4.0.10]#grep -v "^#" redis.conf | grep -v "^$"
    #-v 作用取相反

5.指定配置文件啟動:


bind 192.168.182.130 
 #綁定ip,如需要遠程訪問,需要填寫伺服器ip
protected-mode yes  #安全模式 
port 6800       #埠 
requirepass  haohaio         #密碼                                                                       
daemonize yes
#守護進程方式運行,後臺運行
pidfile /var/run/redis_6379.pid
#進程id文件
loglevel notice 
#日誌等級
logfile ""
#日誌文件
slaveof
#主從複製
  • 啟動redis服務端:
[root@xujunk redis-4.0.10]#redis-server redis.conf
  • 啟動redis客戶端
[root@xujunk redis-4.0.10]#redis-cli -p 6379 -h 127.0.0.1
  • 查看redis 進程狀態
ps -ef|grep redis

netstat -tunlp|grep redis
#LISTEN  表示監聽狀態
  • 驗證連接成功
客戶端輸入:
    127.0.0.1:6379> ping
    返回值:PONG

3.redis 數據結構

  • redis是一種高級的key:value存儲系統,其中balue支持五種數據類型。
    • 字元串
    • 散列
    • 列表
    • 集合
    • 有序集合
  • 基本命令:

    127.0.0.1:6379> keys *   #查看所有的key
    127.0.0.1:6379> type key  #查看key的類型
    127.0.0.1:6379> expire key seconds #過期時間
        示例:
          >expire name "Tom" 10
            #表示10秒後 {"name":"Tom"}鍵值對將消失
    127.0.0.1:6379> ttl key   #查看key過期剩餘時間  -2表示key已經不存在了
    127.0.0.1:6379>persist key   #取消key的過期時間  -1表示key存在,沒有過期時間
    127.0.0.1:6379>exists key   #判斷key存在  存在返回1  否則0
    
    127.0.0.1:6379>exists key   #判斷key存在不?  存在返回1  否則0
    127.0.0.1:6379>del key        #刪除key  返回1代表刪除成功,返回0代表刪除失敗
    127.0.0.1:6379>dbsize       #計算當前庫key的數量, 沒有參數
    

1.字元串:

  • strings類型
1.set           設置key
    127.0.0.1:6379> set k1 "v1"
    >>>OK
2.get           獲取key
    127.0.0.1:6379> get k1
    >>>"v1"
3.append    追加string
    127.0.0.1:6379>append name ' dsb'  
     >>> 6   #返回追加後字元串長度
4.mset      追加key的string
    127.0.0.1:6379> mset u1 "xm" u2 "xg" u3 "xh"
    OK
5.mget      獲取多個value
    127.0.0.1:6379> mget u1 u2
    1) "xm"
    2) "xg"
6.del      刪除key
    127.0.0.1:6379> del k1
    (integer) 1
7. incr    遞增 +1
    127.0.0.1:6379> incr num
    (integer) 10
8.decr     遞減-1
    127.0.0.1:6379> decr num
    (integer) 9

2.list類型:

  • list類型為雙向隊列
1.lpush         從列表左邊插入
    127.0.0.1:6379>lpush hobby "sleep" "swim" "read"

2.lrange        獲取一定長度的元素
    127.0.0.1:6379> lrange hobby 0 3
    1) "read"
    2) "swim"
    3) "sleep"
3.rpush         從列表右邊插
    127.0.0.1:6379> lrange hobby 0 4
    1) "read"
    2) "swim"
    3) "sleep"
    4) "pingpang"
4.ltrim          截取一定長度列表,從索引0取到2,刪除其餘的元素
    127.0.0.1:6379> ltrim hobby 0 2
    OK
5.llen          查看長度
    127.0.0.1:6379> llen hobby
    (integer) 3
6.lpop          刪除最左邊一個元素
    127.0.0.1:6379> lpop hobby
    "read"

7.rpop           刪除最右邊一個元素
    127.0.0.1:6379> rpop hobby
    "sleep"
8.lpushx/rpushx     key存在添加值,不存在不處理
    127.0.0.1:6379> lpushx hobby "read"
    (integer) 2

3.sets集合類型:

  • redis的集合,是一種無序的集合,集合中的元素沒有先後順序。
  • 集合相關的操作也很豐富,如添加新元素、刪除已有元素、取交集、取並集、取差集等。我們來看例子:
1.sadd      添加 元素
127.0.0.1:6379> sadd zoo "tigger"
(integer) 1

2.srem      刪除元素
127.0.0.1:6379> srem zoo "tigger"
(integer) 1

3.sismember        判斷是否為set的一個元素
127.0.0.1:6379> sismember zoo "tigger"
(integer) 1

4.smembers         返回集合所有的成員
127.0.0.1:6379> smembers zoo
1) "monkey"
2) "pandas"
3) "tigger"

5.sdiff             返回一個集合和其他集合的差異
127.0.0.1:6379> sdiff zoo zoo2
1) "tigger"
2) "pandas"
#找出集合zoo中有的,而zoo2中沒有的元素

6.sunion            返回幾個集合的並集
127.0.0.1:6379> sunion zoo zoo2
1) "tigger"
2) "monkey"
3) "pandas"
4) "bird"
5) "fox"

4.有序集合(以Z開頭的命令)

  • 用來保存需要排序的數據,例如排行榜,成績,工資等。

  • 實例:

#利用有序集合排序,排序學生的成績
127.0.0.1:6379> zadd score 70 "wang"
(integer) 1
127.0.0.1:6379> zadd score 60 "li"
(integer) 1
127.0.0.1:6379> zadd score 60 "liu"
(integer) 1

#zreverange倒敘   zrange正序
127.0.0.1:6379> zrevrange score 0 -1 withscores
1) "wang"
2) "70"
3) "liu"
4) "60"
5) "li"
6) "60"
127.0.0.1:6379> zrange score 0 -1 withscores
1) "li"
2) "60"
3) "liu"
4) "60"
5) "wang"
6) "70"
   
zrem        移除
127.0.0.1:6379> zrem score wang
(integer) 1

zcard       返回有序集合基數
127.0.0.1:6379> zcard score
(integer) 2
#2個基數

zscore        返回成員的score值

127.0.0.1:6379> zscore score li
"60"
#查詢score鍵,li對象的值

zrank   返回有序集合中,成員的排名,預設按score,從小到大排序
127.0.0.1:6379> zrank score wang
(integer) 3
#第三名   從0索引開始

5.哈希數據結構

  • 哈希結構就是 k1 -> k1 : v1 如同字典 套字典 { k1 : { k2: v2 } } ,取出v2 必須 k1,取出k2
  • hashes即哈希。哈希是從redis-2.0.0版本之後才有的數據結構。
  • hashes存的是字元串和字元串值之間的映射,比如一個用戶要存儲其全名、姓氏、年齡等等,就很適合使用哈希。
1.hset  設置散列值
127.0.0.1:6379> hset news1 title "New1 title"
(integer) 1
127.0.0.1:6379> hset news1 content "This is first news"
(integer) 1
2.hget  獲取散列值
127.0.0.1:6379> hget news1 content
"This is first news"
127.0.0.1:6379> hget news1 title
"New1 title"

3.hmset     設置多對散列表
127.0.0.1:6379> hmset news2 title "New2 title" content "This is seconde news"
OK

4.hmget     獲取多對散列值
127.0.0.1:6379> hmget news2 title content
1) "New2 title"
2) "This is seconde news"

5.hsetnx    如果散列已經存在,則不設置(防止覆蓋key)
# 1代表設置成功,0代表設置失敗
127.0.0.1:6379> hsetnx news2 title "news 2"
(integer) 0
127.0.0.1:6379> hsetnx news3 title "news 3"
(integer) 1

6.hkeys     返回所有keys
127.0.0.1:6379> hkeys news1
1) "content"
2) "title"

7.hvals     返回所有values
127.0.0.1:6379> hvals news1
1) "This is first news"
2) "New1 title"

8.hlen          返回散列包含域(field)的數量
127.0.0.1:6379> hlen news1
(integer) 2
127.0.0.1:6379> hlen news2
(integer) 2

9.hdel     刪除散列指定的域(field)
127.0.0.1:6379> hdel news1 title
(integer) 1
127.0.0.1:6379> hget news1 title
(nil)

10.hexists    判斷是否存在
127.0.0.1:6379> hexists news1 title
(integer) 0
127.0.0.1:6379> hexists news1 content
(integer) 1
#0表示不存在,1表示存在

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 修改命令提示符顏色 修改命令提示符的話,只需修改PS1環境變數即可。 效果如圖: 修改命令輸入的顏色 修改命令輸入的顏色,思路是不關閉PS1的顏色,然後在每次敲下回車鍵執行命令的時候自動插入顏色終止符。這需要藉助trap捕獲DEBUG信號來實現。 如果要寫入shell配置文件,建議寫到 ,而不要寫入 ...
  • FAT32(File Allocation Table)是一種32位的FAT文件系統,微軟在1996年8月發佈。 FAT32的數字32是下麵會講到的FAT中每個表項的長度。 磁碟(硬碟)是數據的載體,而文件系統則是將這些數據以某種合理的結構組織起來方便操作系統的管理。 藉此文分析一下微軟的FAT32 ...
  • 想要管理多種具體的東西,那麼需要遵守每種東西的規範。如果想要提供一種通用模式來對這些具體的東西統一管理,需要使用一種古老的技術:抽象。 抽象是將多種具體的東西(管理時需要遵守的規範)的共同點抽取出來,放入到更高一層的抽象層。在抽象層不定義或少量定義具體的規範細則,而是讓下層更具體的東西遵守抽象出來的 ...
  • bash基本特性 bash基本介紹 bash是shell的一種,shell是電腦與用戶交互的主要介面,狹義上的shell指的是CLI(command line interface命令行介面),用戶輸入命令,bash判斷並執行。 bash的登陸提示 bash登陸時會有相應的提示,提示內容可以在相關文 ...
  • 安裝虛擬機 VMWare安裝官方網站 https://www.pagesinventory.com/domain/www.vmware.com.html 鏡像文件安裝 http://windows.dmn77.cn/ 安裝虛擬機需要鏡像文件來運行 1.首先下載好vmware軟體包,解壓,點擊運行 2 ...
  • 參考地址: 如何看MS SQLSERVER資料庫的執行計劃https://blog.csdn.net/luoyanqing119/article/details/17022649 SQLserver索引的原理和應用https://www.cnblogs.com/knowledgesea/p/3672 ...
  • redis持久化存儲 是一種記憶體型資料庫,一旦伺服器進程退出,資料庫的數據就會丟失,為瞭解決這個問題, 提供了兩種持久化的方案,將記憶體中的數據保存到磁碟中,避免數據的丟失。 1.RDB持久化 redis提供了RDB持久化的功能,這個功能可以將redis在記憶體中的狀態數據保存到磁碟 觸發機制: 手動執 ...
  • 在SQL Server資料庫中,有時候會建立一些Windows認證的賬號(域賬號),例如,我們公司習慣給開發人員和Support同事開通NT賬號許可權,如果有離職或負責事宜變更的話,那麼要如何正確的刪除這些Windows認證賬號呢?這篇文章就是來探討一下如何正確的刪除Windows認證賬號。如下所示:... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...