主頁 > 資料庫 > Part_one:Redis第一次接觸

Part_one:Redis第一次接觸

2020-09-15 00:53:18 資料庫

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表示存在

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/40056.html

標籤:NoSQL

上一篇:Robo 3T SQL

下一篇:pb從image欄位中產生pdf檔案

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • GPU虛擬機創建時間深度優化

    **?桔妹導讀:**GPU虛擬機實體創建速度慢是公有云面臨的普遍問題,由于通常情況下創建虛擬機屬于低頻操作而未引起業界的重視,實際生產中還是存在對GPU實體創建時間有苛刻要求的業務場景。本文將介紹滴滴云在解決該問題時的思路、方法、并展示最終的優化成果。 從公有云服務商那里購買過虛擬主機的資深用戶,一 ......

    uj5u.com 2020-09-10 06:09:13 more
  • 可編程網卡芯片在滴滴云網路的應用實踐

    **?桔妹導讀:**隨著云規模不斷擴大以及業務層面對延遲、帶寬的要求越來越高,采用DPDK 加速網路報文處理的方式在橫向縱向擴展都出現了局限性。可編程芯片成為業界熱點。本文主要講述了可編程網卡芯片在滴滴云網路中的應用實踐,遇到的問題、帶來的收益以及開源社區貢獻。 #1. 資料中心面臨的問題 隨著滴滴 ......

    uj5u.com 2020-09-10 06:10:21 more
  • 滴滴資料通道服務演進之路

    **?桔妹導讀:**滴滴資料通道引擎承載著全公司的資料同步,為下游實時和離線場景提供了必不可少的源資料。隨著任務量的不斷增加,資料通道的整體架構也隨之發生改變。本文介紹了滴滴資料通道的發展歷程,遇到的問題以及今后的規劃。 #1. 背景 資料,對于任何一家互聯網公司來說都是非常重要的資產,公司的大資料 ......

    uj5u.com 2020-09-10 06:11:05 more
  • 滴滴AI Labs斬獲國際機器翻譯大賽中譯英方向世界第三

    **桔妹導讀:**深耕人工智能領域,致力于探索AI讓出行更美好的滴滴AI Labs再次斬獲國際大獎,這次獲獎的專案是什么呢?一起來看看詳細報道吧! 近日,由國際計算語言學協會ACL(The Association for Computational Linguistics)舉辦的世界最具影響力的機器 ......

    uj5u.com 2020-09-10 06:11:29 more
  • MPP (Massively Parallel Processing)大規模并行處理

    1、什么是mpp? MPP (Massively Parallel Processing),即大規模并行處理,在資料庫非共享集群中,每個節點都有獨立的磁盤存盤系統和記憶體系統,業務資料根據資料庫模型和應用特點劃分到各個節點上,每臺資料節點通過專用網路或者商業通用網路互相連接,彼此協同計算,作為整體提供 ......

    uj5u.com 2020-09-10 06:11:41 more
  • 滴滴資料倉庫指標體系建設實踐

    **桔妹導讀:**指標體系是什么?如何使用OSM模型和AARRR模型搭建指標體系?如何統一流程、規范化、工具化管理指標體系?本文會對建設的方法論結合滴滴資料指標體系建設實踐進行解答分析。 #1. 什么是指標體系 ##1.1 指標體系定義 指標體系是將零散單點的具有相互聯系的指標,系統化的組織起來,通 ......

    uj5u.com 2020-09-10 06:12:52 more
  • 單表千萬行資料庫 LIKE 搜索優化手記

    我們經常在資料庫中使用 LIKE 運算子來完成對資料的模糊搜索,LIKE 運算子用于在 WHERE 子句中搜索列中的指定模式。 如果需要查找客戶表中所有姓氏是“張”的資料,可以使用下面的 SQL 陳述句: SELECT * FROM Customer WHERE Name LIKE '張%' 如果需要 ......

    uj5u.com 2020-09-10 06:13:25 more
  • 滴滴Ceph分布式存盤系統優化之鎖優化

    **桔妹導讀:**Ceph是國際知名的開源分布式存盤系統,在工業界和學術界都有著重要的影響。Ceph的架構和演算法設計發表在國際系統領域頂級會議OSDI、SOSP、SC等上。Ceph社區得到Red Hat、SUSE、Intel等大公司的大力支持。Ceph是國際云計算領域應用最廣泛的開源分布式存盤系統, ......

    uj5u.com 2020-09-10 06:14:51 more
  • es~通過ElasticsearchTemplate進行聚合~嵌套聚合

    之前寫過《es~通過ElasticsearchTemplate進行聚合操作》的文章,這一次主要寫一個嵌套的聚合,例如先對sex集合,再對desc聚合,最后再對age求和,共三層嵌套。 Aggregations的部分特性類似于SQL語言中的group by,avg,sum等函式,Aggregation ......

    uj5u.com 2020-09-10 06:14:59 more
  • 爬蟲日志監控 -- Elastc Stack(ELK)部署

    傻瓜式部署,只需替換IP與用戶 導讀: 現ELK四大組件分別為:Elasticsearch(核心)、logstash(處理)、filebeat(采集)、kibana(可視化) 下載均在https://www.elastic.co/cn/downloads/下tar包,各組件版本最好一致,配合fdm會 ......

    uj5u.com 2020-09-10 06:15:05 more
最新发布
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:33:24 more
  • MySQL中binlog備份腳本分享

    關于MySQL的二進制日志(binlog),我們都知道二進制日志(binlog)非常重要,尤其當你需要point to point災難恢復的時侯,所以我們要對其進行備份。關于二進制日志(binlog)的備份,可以基于flush logs方式先切換binlog,然后拷貝&壓縮到到遠程服務器或本地服務器 ......

    uj5u.com 2023-04-20 08:28:06 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:27:27 more
  • 快取與資料庫雙寫一致性幾種策略分析

    本文將對幾種快取與資料庫保證資料一致性的使用方式進行分析。為保證高并發性能,以下分析場景不考慮執行的原子性及加鎖等強一致性要求的場景,僅追求最終一致性。 ......

    uj5u.com 2023-04-20 08:26:48 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:26:35 more
  • 云時代,MySQL到ClickHouse資料同步產品對比推薦

    ClickHouse 在執行分析查詢時的速度優勢很好的彌補了MySQL的不足,但是對于很多開發者和DBA來說,如何將MySQL穩定、高效、簡單的同步到 ClickHouse 卻很困難。本文對比了 NineData、MaterializeMySQL(ClickHouse自帶)、Bifrost 三款產品... ......

    uj5u.com 2023-04-20 08:26:29 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:25:13 more
  • Redis 報”OutOfDirectMemoryError“(堆外記憶體溢位)

    Redis 報錯“OutOfDirectMemoryError(堆外記憶體溢位) ”問題如下: 一、報錯資訊: 使用 Redis 的業務介面 ,產生 OutOfDirectMemoryError(堆外記憶體溢位),如圖: 格式化后的報錯資訊: { "timestamp": "2023-04-17 22: ......

    uj5u.com 2023-04-20 08:24:54 more
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:24:03 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:23:11 more