redies的複習總結

2021-10-01 01:40:40 字數 3028 閱讀 1925

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 ...