天天看點

redis使用,python連接配接redis,nosqlNoSQL介紹

目錄

  • 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

)

  • 泛指非關系型的資料庫
  • 不支援

    SQL

    文法
  • 存儲結構跟傳統關系型資料庫中的那種關系表完全不同,

    nosql

    中存儲的資料都是KV形式(

    key:value

    ),類似于字典從存儲方式,

    key:value

  • NoSQL

    的世界中沒有一種通用的語言,每種

    nosql

    資料庫都有自己的

    api

    和文法,以及擅長的業務場景
  • NoSQL

    中的産品種類相當多:
    • 1、

      Redis

    • 2、

      Mongodb

    • 3、

      Hbase hadoop

    • 4、

      Cassandra hadoop

2、NoSQL和SQL資料庫的比較:

  • 适用場景不同:

    sql

    資料庫适合用于關系特别複雜的資料查詢場景,

    nosql

    反之
  • 事務 特性的支援:

    sql

    對事務的支援非常完善,而

    nosql

    基本不支援事務
  • 兩者在不斷地取長補短,呈現融合趨勢

3、Redis介紹

3.1、Redis簡介

  • Redis

    是一個開源的使用

    ANSI C

    語言編寫、支援網絡、可基于記憶體亦可持久化的日志型、

    Key-Value

    資料庫,并提供多種語言的API。從2010年3月15日起,

    Redis

    的開發工作由

    VMware

    主持。從2013年5月開始,

    Redis

    的開發由Pivotal贊助。
  • 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/