目錄
- NoSQL介紹
-
- 1、NoSQL:一類新出現的資料庫(`not only sql`)
- 2、NoSQL和SQL資料庫的比較:
- 3、Redis介紹
-
- 3.1、Redis簡介
- 3.2、Redis特性
- 3.3、Redis 優勢
- 3.4、Redis應用場景
- 3.5、推薦閱讀
- 3.6、計算機的存儲
- 3.7、資料庫存儲
- 4、Redis安裝!
-
- 4.1、使用包管理工具安裝
-
- 4.1.1、線上安裝
- 4.1.2、預設配置檔案路徑
- 4.1.3、包管理工具預設可執行程式存儲的路徑有些應用安裝路徑是在/usr/bin/
- 4.2、自定義線下安裝(安裝包安裝)
-
- 4.2.1、下載下傳安裝包
- 4.2.2、把安裝包壓縮檔案拷貝到ubuntu虛拟機桌面目錄下并解壓解壓安裝包
- 4.2.3、進入解壓後的安轉包目錄
- 4.2.4、自行閱讀
- 4.2.5、編譯c/c++語言源碼
- 4.2.6、把編譯之後的可執行檔案放入指定标準安裝目錄中
- 4.2.7、把預設提供的配置檔案,拷貝到标準目錄中
- 4.2.8、補充
- 4.3、redis基本操作
-
- 4.3.1、指定配置檔案啟動redis
- 4.3.2、關閉redis伺服器
- 4.4、redis指令操作
-
- 4.4.1.、字元串類型
- 4.4.2.、hash類型資料操作
- 4.4.3、list清單類型資料操作
- 4.4.4、set集合類型
- 4.4.5、zset有序集合
- 5、Redis的python用戶端的使用
- 6、結語:
NoSQL介紹
1、NoSQL:一類新出現的資料庫( not only sql
)
not only sql
- 泛指非關系型的資料庫
- 不支援
文法SQL
- 存儲結構跟傳統關系型資料庫中的那種關系表完全不同,
中存儲的資料都是KV形式(nosql
),類似于字典從存儲方式,key:value
key:value
-
的世界中沒有一種通用的語言,每種NoSQL
資料庫都有自己的nosql
和文法,以及擅長的業務場景api
-
中的産品種類相當多:NoSQL
- 1、
Redis
- 2、
Mongodb
- 3、
Hbase hadoop
- 4、
Cassandra hadoop
- 1、
2、NoSQL和SQL資料庫的比較:
- 适用場景不同:
資料庫适合用于關系特别複雜的資料查詢場景,sql
反之nosql
- 事務 特性的支援:
對事務的支援非常完善,而sql
基本不支援事務nosql
- 兩者在不斷地取長補短,呈現融合趨勢
3、Redis介紹
3.1、Redis簡介
-
是一個開源的使用Redis
語言編寫、支援網絡、可基于記憶體亦可持久化的日志型、ANSI C
資料庫,并提供多種語言的API。從2010年3月15日起,Key-Value
的開發工作由Redis
主持。從2013年5月開始,VMware
的開發由Pivotal贊助。Redis
-
是Redis
技術陣營中的一員,它通過多種鍵值資料類型來适應不同場景下的存儲需求,借助一些高層級的接口使用其可以勝任,如緩存、隊列系統的不同角色NoSQL
3.2、Redis特性
- Redis 與其他 key - value 緩存産品有以下三個特點:
- Redis支援資料的持久化,可以将記憶體中的資料儲存在磁盤中,重新開機的時候可以再次加載進行使用。
- Redis不僅僅支援簡單的key-value類型的資料,同時還提供list,set,zset,hash等資料結構的存儲。
- Redis支援資料的備份,即master-slave模式的資料備份。
3.3、Redis 優勢
- 性能極高 – Redis能讀的速度是110000次/s,寫的速度是81000次/s 。
- 豐富的資料類型 – Redis支援二進制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 資料類型操作。
- 原子 – Redis的所有操作都是原子性的,同時Redis還支援對幾個操作全并後的原子性執行。
- 豐富的特性 – Redis還支援 publish/subscribe, 通知, key 過期等等特性。
3.4、Redis應用場景
- 用來做緩存(ehcache/memcached)——redis的所有資料是放在記憶體中的(記憶體資料庫)
- 可以在某些特定應用場景下替代傳統資料庫——比如社交類的應用
- 在一些大型系統中,巧妙地實作一些特定的功能:session共享、購物車
- 隻要你有豐富的想象力,redis可以用在可以給你無限的驚喜…….
- 打車軟體的坐标資料,使用的就是緩存!凡無需永久存儲的時候,且該資料頻繁被添加和讀取;
3.5、推薦閱讀
- redis官方網站
- redis中文官網
3.6、計算機的存儲
- 永久存儲 —— 磁盤 —— 斷電不會丢失資料,IO慢(資料讀寫慢)
- 緩存 —— 記憶體條 —— 斷電丢失資料,IO快(讀寫很快)
3.7、資料庫存儲
- 永久存儲庫:
…Mysql
- 緩存庫:
緩存資料(用它來做緩存,該資料庫也可以永久儲存資料)Redis
- 給永久存儲資料庫,架設緩存層,來提高資料的讀取的效率;
4、Redis安裝!
4.1、使用包管理工具安裝
4.1.1、線上安裝
ubuntu裡
apt-get
就是包管理工具,官網提供的快速安裝應用的工具;
Mac裡
brew
;
RedHat裡
yum
;
sudo apt-get install redis-server
4.1.2、預設配置檔案路徑
/etc/redis/redis.conf
4.1.3、包管理工具預設可執行程式存儲的路徑有些應用安裝路徑是在/usr/bin/
/usr/local/bin/redis-server
/usr/local/bin/redis-cli
4.2、自定義線下安裝(安裝包安裝)
4.2.1、下載下傳安裝包
4.2.2、把安裝包壓縮檔案拷貝到ubuntu虛拟機桌面目錄下并解壓解壓安裝包
cd ~/Desktop
tar -zxvf redis-3.0.6.tar.gz
4.2.3、進入解壓後的安轉包目錄
cd redis-3.0.6
4.2.4、自行閱讀
自己閱讀安裝目錄下的README和INSTALL檔案
(一般的安裝包都提供該檔案,用于說明安裝和使用步驟的)
4.2.5、編譯c/c++語言源碼
4.2.6、把編譯之後的可執行檔案放入指定标準安裝目錄中
4.2.7、把預設提供的配置檔案,拷貝到标準目錄中
sudo cp ./redis.conf /etc/redis/
4.2.8、補充
redis
線下安裝的源碼和編譯擷取的可執行程式,都在
src
目錄中;
4.3、redis基本操作
4.3.1、指定配置檔案啟動redis
sudo redis-server /etc/redis/redis.conf
4.3.2、關閉redis伺服器
4.4、redis指令操作
4.4.1.、字元串類型
# 4.4.1.1、設定鍵值對
set <key> <value>
# 4.4.1.2、擷取一個key的值
get <key>
# 4.4.1.3、設定鍵值對的同時指定有效期
setex <key> <有效期,秒> <value>
# 4.4.1.4、一次設定多個鍵值對
mset <key1> <value1> <key2> <value2> .... <keyN> <valueN>
# 4.4.1.5、一次擷取多個鍵的值
mget <key1> <key2> ... <keyN>
# 4.4.1.5、檢視目前庫有哪些key
# 此處正則隻支援“*”、“[]”和“?”三種;
# “*”比對任意字元
# “[]”比對指定字元
# “?”比對任意一個字元
keys <正規表達式>
4.4.2.、hash類型資料操作
# 4.4.2.1、建立隻有一個屬性的哈希
hset <key> <field> <value>
# 4.4.2.2、建立有多個屬性的哈希
hmset <key> <field1> <value1> <field2> <value2> ...
# 4.4.2.3、擷取一個哈希的所有鍵
hkeys <key>
# 4.4.2.4、擷取一個哈希的一個屬性值
hget <key> <field>
# 4.4.2.5、擷取一個哈希的多個屬性值
hmget <key> <field1> <field2>...
# 4.4.2.5、删除一個哈希中的屬性
hdel <key> <field1> <field2>...
# 注意:如果使用"del <key>"指令會把整個哈希删除
4.4.3、list清單類型資料操作
# 4.4.3.1、清單左側插入
lpush <key> <value1> <value2>...
# 4.4.3.2、清單右側插入
rpush <key> <value1> <value2>...
# 4.4.3.3、清單指定位置插入(在xxx之前插入)
linsert <key> before <xxx> <value>
# 4.4.3.4、清單指定位置插入(在xxx之後插入)
linsert <key> after <xxx> <value>
# 4.4.3.5、清單成員擷取
# 整數代表下表,和python清單下标類似
# 索引從左側開始,第⼀個元素為0
# 索引可以是負數,表示從尾部開始計數,如-1表示最後⼀個元素
lrange <key> 0 -1 # [0,-1]擷取所有
lrange <key> 0 2 # [0,2]擷取下标0,1,2三個值
# 4.4.3.6、修改指定下标位置的值
lset <key> <index> <新值>
# 4.4.3.7、删除清單中的一個成員
# 1、其中count為0,代表删除所有相同的值
# 2、其中count為n(正整數),代表從左到右周遊删除相同的值
# 3、其中count為-n(負整數),代表從右到左周遊删除相同的值
lrem <key> <count> <value>
# 4.4.3.8、清單的截取
# 截取下标[start,end]範圍類的資料
# 注意:直接操作原清單;
ltrim <key> <start> <end>
4.4.4、set集合類型
特征:
- 成員無序
- 值的類型為string
- 成員不能重複,具備唯一性
- 集合成員沒有修改操作
# 4.4.4.1、添加集合成員
sadd <key> <member1> <member2> <member3>...
# 4.4.4.2、檢視集合中的所有成員
smembers <key>
# 4.4.4.3、删除指定成員
srem <key> <member>
4.4.5、zset有序集合
所謂有序集合,就是在原有集合set基礎上,給每一個成員添加一個分值/權重值來記錄每個成員的順序!
- 使用分值/權重值記錄順序,故有序
- 成員資料類型為string
- 成員唯一
- 分值/權重值是一個浮點數
# 4.4.5.1、添加成員
zadd <key> <score1> <member1> <score2> <member2> ...
# 4.4.5.2、根據下标擷取有續內建員
# 預設有序集合順序是按照分值生序排列
# 以下,擷取[start, stop]下标範圍内的成員
# 索引從左側開始,第⼀個元素為0
# 索引可以是負數,表示從尾部開始計數,如-1表示最後⼀個元素
zrange <key> <start> <stop>
# 4.4.5.3、傳回分值範圍内的成員: min_scoer <= 分值 <= max_score
zrangebyscore <key> <min_score> <max_score>
# 4.4.5.4、删除指定成員
zrem <key> <member1> <member2> ...
# 4.4.5.5、删除指定分值範圍内的成員
zremrangebyscore <key> <min_score> <max_score>
5、Redis的python用戶端的使用
from redis.client import StrictRedis
# 1、建立用戶端連結對象
conn = StrictRedis(
host='127.0.0.1',
port=6379
)
# 2、通過用戶端對象中的執行個體方法對redis進行增删改查操作
# set name haige
conn.set("name", "haige")
# get name
conn.get("name")
# zadd book_count 99 西遊記 88 紅樓夢 77 三國演義
# 注意:在較新的redis用戶端版本中,有續集的新增操作中,成員及分值是以python字典形式傳入函數中 —— 成員為key,分值為value
conn.zadd("book_count", {"西遊記":99, "紅樓夢":88, "三國演義":77})
6、結語:
個人記錄,新手入門,多多學習,歡迎大家交流探讨!
個人網站:
http://106.54.78.238/
song_of _sea的個人網站 http://106.54.78.238/