pandas read_csv 與 to_csv 方法各引數詳解
阿新 • • 發佈:2020-11-04
一、背景
以前也看過一點Redis的內容,現在詳細的介紹一下。
二、介紹
1.Redis是完全開源的資料庫,遵從,是一個高效能的key-value資料庫。
1.Redis支援資料的持久化,可以將記憶體中的資料儲存在磁碟中,重啟的時候可以再次載入進行使用。 2.Redis不僅僅支援簡單的key-value型別的資料,同時還提供list,set,zset,hash等資料結構的儲存。 3.Redis支援資料的備份,即master-slave模式的資料備份。
2.Redis的優勢
1.效能極高 – Redis能讀的速度是110000次/s,寫的速度是81000次/s 。 2.豐富的資料型別 – Redis支援二進位制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 資料型別操作。 3.原子 – Redis的所有操作都是原子性的,意思就是要麼成功執行要麼失敗完全不執行。單個操作是原子性的。多個操作也支援事務,即原子性,通過MULTI和EXEC指令包起來。 4.豐富的特性 – Redis還支援 publish/subscribe, 通知, key 過期等等特性。
3.Redis的資料型別
Redis支援五種資料型別:string(字串),hash(雜湊),list(列表),set(集合)及zset(sorted set:有序集合)。
3.1 字串
string 是 redis 最基本的型別,你可以理解成與 Memcached 一模一樣的型別,一個 key 對應一個 value。 string 型別是二進位制安全的。意思是 redis 的 string 可以包含任何資料。比如jpg圖片或者序列化的物件。 string 型別是 Redis 最基本的資料型別,string 型別的值最大能儲存 512MB。
例項
用SET(可以小寫)設定string的資料欄位 單引號或者雙引號都可以 用GET獲取資料 SET first "我愛Redis" >>> OK GET first >>> "我愛Redis"
3.2 Hash(雜湊)
Redis hash 是一個鍵值(key=>value)對集合。 Redis hash 是一個 string 型別的 field 和 value 的對映表,hash 特別適合用於儲存物件。 每個 hash 可以儲存 232 -1 鍵值對(40多億)。
例項
使用HMSET設定資料 使用HGET獲取資料,使用對應的key獲取對應的field HMSET runoob field1 "Hello" field2 "World" >>> OK HGET field1 >>> "Hello" HGET field2 >>> "World"
3.3 List(列表)
Redis 列表是簡單的字串列表,按照插入順序排序。你可以新增一個元素到列表的頭部(左邊)或者尾部(右邊)。其中左邊預設為列表的頭部(索引小的),右邊預設為列表的尾部(索引大的),同時列表中的資料可以重複
列表最多可儲存 232 - 1 元素 (4294967295, 每個列表可儲存40多億)。
例項
Lpush——先進後出,在列表頭部插入元素 Rpush——先進先出,在列表的尾部插入元素 Lrange——出棧,根據索引,獲取列表元素 Lpop——左邊出棧,獲取列表的第一個元素 Rpop——右邊出棧,獲取列表的最後一個元素 Lindex——根據索引,取出元素 Llen——連結串列長度,元素個數 Lrem——根據key,刪除n個value Ltrim——根據索引,刪除指定元素 Rpoplpush——出棧,入棧 Lset——根據index,設定value Linsert before——根據value,在之前插入值 Linsert after——根據value,在之後插入值
3.3.1 順序和新增元素的驗證:
然後lpush,rpush,lpush說明他的新增元素的順序以及輸出的結果 > Lpush list1 java (integer) 1 > rpush list1 java1 (integer) 2 > lpush list1 python (integer) 3 > lrange list1 0 10 1) "python" 2) "java" 3) "java1"
3.3.2 RpopLpush指令
指令RpopLpush list1 list2表示:list1從右邊出棧的元素從左邊加入到list2中 >Rpoplpush list1 java2 "java1" > lrange list1 0 10 1) "python" 2) "java" > lrange java2 0 10 1) "java1"
3.3.3 pop指令等
> Lrange list1 0 -1 1) "javak-1" 2) "python" 3) "java" 4) "javak-2" > Rpop list1 "javak-2" > Lpop list1 "javak-1" > Lrange list1 0 -1 1) "python" 2) "java" > Lindex list1 8 沒找到就是nil (nil) > Lindex list1 1 "java" > llen list1 (integer) 2
3.3.4 插入指令
插入指令語法:Linsert list_object after/before 列表中元素 插入元素 > Linsert list1 after java java1 4 > lrange list1 0 -1 1) "java" 2) "java1" 3) "python" 4) "java" > Linsert list1 before java java2 5 > lrange list1 0 -1 1) "java2" 2) "java" 3) "java1" 4) "python" 5) "java" > Linsert list1 before javan javak -1 > lrange list1 0 -1 1) "java2" 2) "java" 3) "java1" 4) "python" 5) "java" 注意:如果元素沒有就會顯示插入失敗,返回-1的值,插入順序只有左插入,在遇到第一個元素時就插入並結束插入過程
3.3.5 索引操作和值操作
語法:Lindex list_object index表示從列表物件中獲取索引位置的元素 > lrange list1 0 -1 1) "java2" 2) "java" 3) "java1" 4) "python" 5) "java" > Lindex list1 3 "python" > Lindex list1 100 (nil) 語法:Lset list_object index 替換內容,表示從列表中選取index的元素,並進行替換 > lrange list1 0 -1 1) "java2" 2) "java" 3) "java1" 4) "python" 5) "java" > lset list1 0 php OK > lrange list1 0 -1 1) "php" 2) "java" 3) "java1" 4) "python" 5) "java" Lrem list_object number key:根據key值刪除列表物件中的指定數量的元素 > lrange list1 0 -1 1) "java" 2) "python" 3) "java1" 4) "java" 5) "python" 6) "java1" > lrem list1 1 python (integer) 1 > lrange list1 0 -1 1) "java" 2) "java1" 3) "java" 4) "python" 5) "java1" Ltrim list_object start_index end_index:根據index的刪除列表物件中的指定元素,需要注意壓棧的順序,從左邊入棧左邊就是小的,從右邊入棧右邊就是小的 > Lpush list1k java php python ruby Django (integer) 5 > lrange list1k 0 -1 1) "Django" 2) "ruby" 3) "python" 4) "php" 5) "java" > Ltrim list1k 0 2 OK > lrange list1k 0 -1 1) "Django" 2) "ruby" 3) "python"
3.4 Set(集合)
Redis 的 Set 是 string 型別的無序集合。 集合是通過雜湊表實現的,所以新增,刪除,查詢的複雜度都是 O(1)。 注意:根據集合內元素的唯一性,第二次插入的元素將被忽略。 集合中最大的成員數為 232 - 1(4294967295, 每個集合可儲存40多億個成員)。
3.5 zSet(有序集合)
Redis zset 和 set 一樣也是string型別元素的集合,且不允許重複的成員。 不同的是每個元素都會關聯一個double型別的分數。redis正是通過分數來為集合中的成員進行從小到大的排序。 zset的成員是唯一的,但分數(score)卻可以重複。
4.各類資料的應用場景
型別 | 簡介 | 特性 | 場景 |
---|---|---|---|
String(字串) | 二進位制安全 | 可以包含任何資料,比如jpg圖片或者序列化的物件,一個鍵最大能儲存512M | --- |
Hash(字典) | 鍵值對集合,即程式語言中的Map型別 | 適合儲存物件,並且可以像資料庫中update一個屬性一樣只修改某一項屬性值(Memcached中需要取出整個字串反序列化成物件修改完再序列化存回去) | 儲存、讀取、修改使用者屬性 |
List(列表) | 連結串列(雙向連結串列) | 增刪快,提供了操作某一段元素的API | 1,最新訊息排行等功能(比如朋友圈的時間線) 2,訊息佇列 |
Set(集合) | 雜湊表實現,元素不重複 | 1、新增、刪除,查詢的複雜度都是O(1) 2、為集合提供了求交集、並集、差集等操作 | 1、共同好友 2、利用唯一性,統計訪問網站的所有獨立ip 3、好友推薦時,根據tag求交集,大於某個閾值就可以推薦 |
Sorted Set(有序集合) | 將Set中的元素增加一個權重引數score,元素按score有序排列 | 資料插入集合時,已經進行天然排序 | 1、排行榜 2、帶權重的訊息佇列 |
三、參考與手冊
這裡有關於Redis很詳細的操作,可以參考。