標籤:個數 conf ble publish 建立 append set double diff
Redis概述
Redis是一個開源的,先進的key-value儲存。它通常被稱為資料結構伺服器,因為鍵可以包含字串,雜湊,鏈表,集合和有序集合Redis簡介 Redis 是完全開源免費的,遵守BSD協議,是一個高效能的key-value資料庫。Redis 與其他 key - value 緩衝產品有以下三個特點:Redis支援資料的持久化,可以將記憶體中的資料儲存在磁碟中,重啟的時候可以再次載入進行使用。Redis不僅僅支援簡單的key-value類型的資料,同時還提供list,set,zset,hash等資料結構的儲存。Redis支援資料的備份,即master-slave模式的資料備份。(主--從) Redis優勢 效能極高 – Redis能讀的速度是110000次/s,寫的速度是81000次/s 。豐富的資料類型 – Redis支援二進位案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 資料類型操作原子 – Redis的所有操作都是原子性的,同時Redis還支援對幾個操作全並後的原子性執行。豐富的特性 – Redis還支援 publish/subscribe, 通知, key 到期等等特性。Redis與其他key-value儲存有什麼不同? Redis有著更為複雜的資料結構並且提供對他們的原子性操作,這是一個不同於其他資料庫的進化路徑。Redis的資料類型都是基於基本資料結構的同時對程式員透明,無需進行額外的抽象。Redis運行在記憶體中但是可以持久化到磁碟,所以在對不同資料集進行高速讀寫時需要權衡記憶體,因為資料量不能大於硬體記憶體。在記憶體資料庫方面的另一個優點是,相比在磁碟上相同的複雜的資料結構,在記憶體中操作起來非常簡單,這樣Redis可以做很多內部複雜性很強的事情。同時,在磁碟格式方面他們是緊湊的以追加的方式產生的,因為他們並不需要進行隨機訪問。
Redis安裝
Redis安裝分為Linux下安裝和win下安裝,網路教程較多,此處非重點省略!
Redis資料類型
Redis支援五種資料類型: string(字串) list(列表) set(集合)(無序集合) zset(有序集合) hash(雜湊)
String(字串)
string是redis最基本的類型,你可以理解成與Memcached一模一樣的類型,一個key對應一個value。string類型是二進位安全的。意思是redis的string可以包含任何資料。比如jpg圖片或者序列化的對象 。string類型是Redis最基本的資料類型,一個鍵最大能儲存512MB。
String操作:
1.set key value //設定一個鍵和值,不存在建立,存在則覆蓋,返回ok2.get key //擷取一個鍵的值,返回結果3.setnx key value //設定一個不存在的鍵和值4.setex key seconds value //設定一個具有有效期間的索引值5.ttl key //查看鍵的有效時間6.setrange key 位置 value //替換字串 EX: setrange name 4 strs //將name鍵對應值得第四個位置起替換為.strs7.mset key1 value1 key2 value2 key3 value3 //大量設定索引值8.msetnx //大量設定不存在的索引值對9.getset //擷取原有值替換為其他值 EX: getset key new_value10.getrange //擷取指定範圍的值 EX: getrange key 0 411.mget //批量擷取值12.incr //加加操作13.incrby key 2 //設定某個索引值加上某個數(正負均可)14.decr //減減操作15.decrby key 2 //設定某個索引值減去某個數16.append key app_value //給指定鍵追加值17.strlen key //求key的長度
list(列表)
Redis 列表是簡單的字串列表,按照插入順序排序。你可以添加一個元素到列表的頭部(左邊)或者尾部(右邊)。
列表操作
1. lpush list1 ‘hello’ // 在list1頭部插入一個字串2.rpush list1 ‘world’ //在list1尾部插入一個字串3.lrange list1 0 -1 //擷取list1中的所有內容4.linsert list1 【before/after】 old_value new_value //在old值之前或之後插入一個新值5.lset list1 0 ‘HELLO’ //修改指定位置的值6.lrem list1 2 ‘hello’ //刪除前倆個hello值7.lrem list1 -2 ‘hello’ // 刪除後倆個hello值8.lrem list1 0 ‘hello’ //刪除所有hello值9.ltrim list1 1 3 //刪除指定範圍外的值10.lpop list1 //從list1的頭部刪除元素並返回11.rpop list1 // 從list1的尾部刪除元素並返回12.lindex list1 1 //返回list1中索引位置上的元素13.llen list1 //返回list1上的長度
無序集合(set)
Redis的Set是string類型的無序集合。集合是通過雜湊表實現的,所以添加,刪除,尋找的複雜度都是O(1)。sadd 命令添加一個string元素到,key對應的set集合中,成功返回1,如果元素已經在集合中返回0,key對應的set不存在返回錯誤。sadd key member
無序集合操作
1.sadd key value sadd myset ‘hello’ //向集合沒有set中添加一條資料2.smembers myset //擷取myset中的所有元素3.srem myset ‘one’ //刪除myset中的元素one4.spop myset //隨機刪除集合中的一個元素並返回5.srandmember myset //隨機回去myset中的值但不刪除6.smove myset1 myset2 lala //將myset1中的lala移動到myset2中7.scard myset1 //返回myset1中值得個數8.sismember myset lala //判斷lala是否在myset中9.sdiff myset1 myset2 //返回倆個集合中的差集10.sdiffstore newset myset1 myset2 //將倆個集合的差集儲存到newset中11.sinter myset1 myset2 //返回倆集合的交集12.sinterstore newset myset1 myset213.sunion myset1 myset2 //返回倆集合的並集14.sunionstore newset myset1 myset2
有序集合(zset)
Redis zset 和 set 一樣也是string類型元素的集合,且不允許重複的成員。不同的是每個元素都會關聯一個double類型的分數。redis正是通過分數來為集合中的成員進行從小到大的排序。zset的成員是唯一的,但分數(score)卻可以重複。zadd 命令添加元素到集合,元素在集合中存在則更新對應scorezadd key score member
有序集合操作
1.zadd zset 1 one //向zset中添加one,排序為1,1 為權重score2.zrem zset one //刪除zset中的元素one3.zincrby zset 2 one //若存在one,score則加2,不存在則添加為24.zrank zset one //返回one在zset中的排名(從小到大)5.zrevrank zset one //返回one在zset中的排名(從大到小)6.zrangebyscore zset 2 3 withscores //返回集合中score在給定區間的元素(閉區間)7.zcount zset 2 3 //返回指定區間值得個數8.zcard zset //返回集合中元素的個數9.zremrangebyrank zset 3 3 //刪除集合中排名在指定區間的元素10.zremrangebyscore zset 1 2 //將集合中從小到大排序結果的score在1~2之間的元素刪除
hash(雜湊)
Redis hash 是一個索引值對集合。Redis hash是一個string類型的field和value的映射表,hash特別適合用於儲存物件。
hash操作
1.hset hashname key value //設定一個雜湊表的索引值2.hsetnx hashname key value //設定一個雜湊表中不存在的鍵和值3.hmset hashname key1 value1 key2 value2…… //大量設定4.hmget hashnane key1 key2…… //批量擷取5.hexists hashname key //檢測key是否存在6.hlen hashname //擷取雜湊表中鍵的數量7.hdel hashname key //刪除雜湊表中的key8.hkeys hashname //返回hash表中所有的鍵9.hvals hashname //返回hash表中的所有值10.hgetall hashname //返回所有的鍵和值
Redis進階應用程式
1.安全性 requirepass password
2.持久性 appendonly yes
修改設定檔 vim /etc/redis/redis.conf
Redis資料庫學習