redis是乙個開源的使用ansi c語言編寫、支援網路、可基於記憶體亦可持久化的日誌型、key-value(nosql)資料庫。它基於記憶體儲存,速度快。
string:類似於map型別,key,vaule都是string型別。
常見的操作指令:
setnx key value:如果key存在就不設定值,返回0,如果不存在key就設定值(為原子性操作)
獲取原來的值並設定新值:getset key newvalue
expire key :設定過期時間;
設定值:set key vaule;
獲取值:get key;
批量插入值:mset key1 vaule1 key2 vaule2;
批量獲取值:mget key1 key2;
刪除值:del key;
vaule自增:incr key;
vaule自減:decr key;
指定增加多少:incrby key 10 (增加10);
指定減少多少:decrby key 10;
hash:可以看做是hash中key為乙個物件的key,vaule為乙個物件的vaule,vaule中有很多物件的屬性,比如,key值為「學生」,vaule可以為name=張三,age=18。
hash的常見指令:
設定值:hset key field value;
獲取值:hget key field ;
獲取key的所有屬性值:hgetall key;
批量插入值:hmset key filed value [field value...];
批量獲取值:hmget key field1 field2……;
刪除值:hdel key feild;
獲取所有屬性的值:hgetall key ;
獲取key屬性的個數:hlen key;
原key的field不存在則set成功,返回1,否則失敗,返回0:hsetnx key filed vaule;
list:類似於鍊錶結構,可以從左右兩邊分別插入,如果該鏈被移除,則該條不存在
list型別常見的資料指令:
從左側插入值:lpush key vaule[vaule....];
lpushx:和lpush相似,但是會判斷key是否存在,若key不存在則不進行任何操作;
rpushx:與lpushx相似;
右邊插入資料 r是right的縮寫:rpush key vaule[vaule....]
檢視start---end中的資料,左包右包 -1表示到最後: lrange key start end;
檢視鍊錶總長度:llen key;
彈出左邊第乙個資料:lpop key;
彈出右邊第乙個資料:rpop key;
阻塞式彈出:如左側阻塞式彈出某乙個key值,就會看有沒有key值如果有就先彈出key值,再從左往右彈出屬性的值,如果沒有就會出現命令阻塞,指導新增新的值或者命令時間過期,如果同時寫多個key值時,按引數 key 的先後順序依次檢查各個列表,彈出第乙個非空列表的頭元素。
左側阻塞式彈出:blpop key[key...] timeout;(timeout為過期時間)
右測阻塞式彈出:brpop key[key...] timeout;
彈出list1右邊的放入list2左邊的:rpoplpush list1 list2;(醫院排隊);
阻塞版本;brpoplpush:阻塞版本;
lrem key count value:
count>0從左邊刪除count個value
count<0從右邊刪除count個value
count=0刪除所有的value
set:是string型別的無序集合,集合成員唯一不允許出現重複資料
set集合中新增元素:sadd key element [element...];
檢視所有元素:smembers key;
檢視元素是否屬於該集合:sismember key element;
刪除集合中的元素:srem 檢查指定元素是否存在於集合中,那麼移除這個元素
檢視元素中集合的數量:scard key;
隨機獲取集合中某一元素:srandmember key;
zset:zset在set集合的基礎上給每乙個元素乙個分數描述,從而使元素變得有序可循,預設按分數公升序排序。
新增元素 每個元素都會攜帶乙個分數:zadd key score member1 score member2…
一般redis的記憶體都是可以通過配置檔案來配置最大記憶體的大小,條件允許的話可以通過改變redis的記憶體大小來解決。
//設定redis最大占用記憶體大小為100m
127.0
.0.1
:6379
> config set maxmemory 100mb
//獲取設定的redis能使用的最大記憶體大小
127.0
.0.1
:6379
> config get maxmemory
redis的記憶體淘汰
既然可以設定redis最大占用記憶體大小,那麼配置的記憶體就有用完的時候。那在記憶體用完的時候,還繼續往redis裡面新增資料不就沒記憶體可用了嗎?
noeviction(預設策略):對於寫請求不再提供服務,直接返回錯誤(del請求和部分特殊請求除外)
allkeys-lru:從所有key中使用lru演算法進行淘汰
volatile-lru:從設定了過期時間的key中使用lru演算法進行淘汰
allkeys-random:從所有key中隨機淘汰資料
volatile-random:從設定了過期時間的key中隨機淘汰
volatile-ttl:在設定了過期時間的key中,根據key的過期時間進行淘汰,越早過期的越優先被淘汰
複習周的總結
學習上 從開學到現在感慨最多的就是時間過的好快,是真的很快。上個星期是英語四六級考試 昨天是我們籃球隊這學期結束訓練 今天是研究生考試。我想像中的大學,跟現實中的差別很大。想象中的我們是可以任意支配自己的時間。現實中的我們需要不停地學習努力。現在進入複習階段,感覺自己無從下手,不知道該從什麼地方開始...
本週複習總結
1.軟體 是為完成某些特定功能而編制的乙個到多個程式檔案的集合 2.程式語言的發展 機器語言 組合語言 高階語言 3.編碼實現 源 編譯源 鏈結注意 1 在編譯源 的過程中,翻譯 解釋 程式比編譯程式的執行速度要慢 4.乙個簡單的程式設計一般包含分析問題,設計演算法,編制程式,除錯程式 5.任何解決...
SQL複習總結
1.索引,觸發器,事務,儲存過程各表示什麼意思?它們有什麼不同?2.distinct用法 語法 select distinct 列名稱 from 表名稱 3.模糊查詢 4.關於笛卡爾積 5.exists用法 6.sqlserver清除快取的實現方法 7.mysql資料庫自動備份四種方法 8.sql ...