Redis學(xué)習(xí)筆記

Redis常用數(shù)據(jù)類型包括:string(字符串),list(鏈表), Hash(哈希),set(集合)及zset(sorted set) (有序集合),Pub/Sub,Transactions

1 String 字符串

常用命令:set,get,decr(遞減),incr (遞增),mget
String是最常用的一種數(shù)據(jù)類型,普通的key/value存儲(chǔ)都可以歸為此類 。一個(gè)Key對(duì)應(yīng)一個(gè)Value,string類型是二進(jìn)制安全的。Redis的string可以包含任何數(shù)據(jù)。
示例(C#):

var cilent=new RedisClient("127.0.0.1",6379);
client.Set<string>("UserName","admin");//Set
string uName=client.Get<string>("Name");//Get
client.Set<int>("VoteUser_Admin",0);//模擬投票
client.Incr("VoteUser_Admin");//投一票 -遞增

2 Hash 哈希

常用命令:hget,hset,hgetall 等。
hash是一個(gè)string 類型的field和value的映射表。hash特別
適合存儲(chǔ)對(duì)象。相對(duì)于將對(duì)象的每個(gè)字段存成單個(gè)string 類型。一個(gè)對(duì)象存儲(chǔ)在hash類型中會(huì)占用更少的內(nèi)存,并且可以更方便的存取整個(gè)對(duì)象。
示例(C#):

            // 存儲(chǔ)一個(gè) User 對(duì)象  
        //第一種方式  增加了序列化/反序列化的開(kāi)銷,并且在需要修改其中一項(xiàng)信息時(shí),需要把整個(gè)對(duì)象取回
            var json = "user序列化字符串";
            var hashId = "UserAdmin";
            client.Set<string>(hashId, "json");
            // 第二種方式
            client.SetEntryInHash(hashId, "Name", "Admin");
            client.SetEntryInHash(hashId, "IP", "127.0.0.1");
            client.SetEntryInHash("UserAdmin", "Pwd", "127.0.0.1");
            //獲取UserAdmin 的Name
            var name = client.GetValueFromHash(hashId, "Name");
            //獲取所有的UserAdmin Key
            var keys = client.GetHashKeys(hashId);
            //獲取所有UserAdmin value
            var values = client.GetHashValues(hashId);

3 List 鏈表

常用命令:lpush,rpush,lpop,rpop,lrange等。
list是一個(gè)鏈表結(jié)構(gòu),主要功能是push,pop,獲取一個(gè)范圍的所有的值等,操作中key理解為鏈表名字。 Redis的list類型其實(shí)就是一個(gè)每個(gè)子元素都是string類型的雙向鏈表。我們可以通過(guò)push,pop操作從鏈表的頭部或者尾部添加刪除元素,這樣list既可以作為棧,又可以作為隊(duì)列。Redis list的實(shí)現(xiàn)為一個(gè)雙向鏈表,即可以支持反向查找和遍歷,更方便操作,不過(guò)帶來(lái)了部分額外的內(nèi)存開(kāi)銷,Redis內(nèi)部的很多實(shí)現(xiàn),包括發(fā)送緩沖隊(duì)列等也都是用的這個(gè)數(shù)據(jù)結(jié)構(gòu) 。
示例(C#):

   #region List基礎(chǔ)使用
            var key = "demolist";
            client.AddItemToList(key, "123");
            client.AddItemToList(key, "1234");
            Console.WriteLine("List數(shù)據(jù)項(xiàng)條數(shù):" + client.GetListCount(key));
            Console.WriteLine("List數(shù)據(jù)項(xiàng)第一條數(shù)據(jù):" + client.GetItemFromList(key, 0));
            Console.WriteLine("List所有數(shù)據(jù)");
            client.GetAllItemsFromList(key).ForEach(e => Console.WriteLine(e));
            #endregion
            #region 隊(duì)列使用
            client.EnqueueItemOnList("name", "zhangsan");
            client.EnqueueItemOnList("name", "lisi");
            int count = client.GetListCount("name");
            for (int i = 0; i < count; i++)
            {
                Console.WriteLine(client.DequeueItemFromList("name"));
            } 
            #endregion
#region 棧使用
                client.PushItemToList("name2", "wangwu");
             client.PushItemToList("name2", "maliu");
             int count = client.GetListCount("name2");
             for (int i = 0; i < count; i++)
            {
                Console.WriteLine(client.PopItemFromList("name2"));
            }
               #endregion

4 Set 集合

常用命令:sadd,spop,smembers,sunion
應(yīng)用場(chǎng)景:提供一個(gè)列表的功能,set可以自動(dòng)排除重復(fù),當(dāng)需要存儲(chǔ)一個(gè)不重復(fù)的列表數(shù)據(jù),可以選擇set。set提供了一個(gè)判斷某個(gè)成員是否在一個(gè)set集合中。

5 ZSet 有序集合

常用命令:zadd,zrange ,zrem,zcard
場(chǎng)景:zset 提供一個(gè)優(yōu)先級(jí)參數(shù)來(lái)進(jìn)行排序,并且是插入有序的,自動(dòng)排序。需要一個(gè)有序的并且不重復(fù)的集合列表,可以選用。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 本文主要介紹 Redis 常用的基本操作命令和數(shù)據(jù)類型操作命令,也就是 Redis 的基本使用。通過(guò)學(xué)習(xí)本文,應(yīng)該...
    江城子Leon閱讀 643評(píng)論 0 0
  • Redis簡(jiǎn)介 Redis 是完全開(kāi)源免費(fèi)的,遵守BSD協(xié)議,是一個(gè)高性能的key-value數(shù)據(jù)庫(kù)。Redis ...
    drfung閱讀 1,041評(píng)論 0 10
  • It's called the what? The peach what?The Peachoid. It's a...
    冰封鉆石閱讀 231評(píng)論 0 0
  • 你是蝸牛, 你若愛(ài)我, 會(huì)為我去掉殼嗎? 我討厭那沉重的負(fù)擔(dān), 壓在你的背上。 你是玫瑰, 你若愛(ài)我, 會(huì)為我去掉...
    小雨點(diǎn)點(diǎn)2018閱讀 284評(píng)論 1 1
  • 在這個(gè)冬至,我用文字取暖。 一起醉酒,一起幽會(huì)春天,走進(jìn)那年的湖邊,催開(kāi)滿堤的櫻花,品嘗新沏的陽(yáng)光。 再把一顆顆文...
    莫微閱讀 229評(píng)論 0 0

友情鏈接更多精彩內(nèi)容