redics在windows平台下的使用

2022-01-15 03:08:26 字數 2888 閱讀 5697

using

servicestack.common.extensions;

using

servicestack.redis;

using

servicestack.redis.generic;

using

servicestack.text;

using servicestack.redis.support;

三:對redis的基本操作

操作方法 

下面該鏈結中的原始碼包或dll檔案,引入到專案中,並新增如下名空間引用(僅限本文):

using servicestack.common.extensions;

using servicestack.redis;

using servicestack.redis.generic;

using servicestack.text;

using servicestack.redis.support;

注:也可直接使用addrangetolist方法將一組資料裝入如:

redis.addrangetolist("addarrangetolist", storemembers);

2. 獲取資料

var members = redis.getallitemsfromlist("additemtolist");

members.foreach(s => response.write("

additemtolist :" + s));

3. 獲取指定索引位置資料  

var item = redis.getitemfromlist("addarrangetolist", 2);

4. 移除:

var list = redis.lists["addarrangetolist"];

list.clear();//清空

list.remove("two");//移除指定鍵值

list.removeat(2);//移除指定索引位置資料

二.儲存物件:

public class userinfo

public string username 

public int age }  

1.通常方式(底層使用json序列化):

redis.set("userinfo", new userinfo() );

userinfo userinfo = redis.get("userinfo");

注:當然上面方式也適合於基本型別,如:

redis.set("my_age", 12);//或redis.set("my_age", 12);

int age = redis.get("my_age");

2.object序列化方式儲存:

var ser = new objectserializer();    //位於namespace servicestack.redis.support;

bool result = redis.set("userinfo", ser.serialize(new userinfo() ));

userinfo userinfo = ser.deserialize(redis.get("userinfo")) as userinfo;

//也支援列表

redis.set("userinfolist_serialize", ser.serialize(userinfolist));

listuserlist = ser.deserialize(redis.get("userinfolist_serialize")) as list;

需要說明的是在測試過程中發現json序列化的效率要比object序列化高一些。

三.儲存**物件,比如:

using (var redisusers = redis.gettypedclient())

);redisusers.store(new userinfo );

var allusers = redisusers.getall();//就像操作ado物件一樣,可以進行crud等操作

allusers.foreach(s => response.write("

user :" + s.username + " age:" + s.age));

}四.使用客戶端鏈結池模式提公升鏈結速度:

public static pooledredisclientmanager createmanager(string readwritehosts, string readonlyhosts)

);          

}宣告鏈結池物件(這裡只使用乙個redis服務端):

pooledredisclientmanager prcm = createmanager(new string , new string );

listuserinfolist = new list();

userinfolist.add(new userinfo() );

userinfolist.add(new userinfo() );

注:1.前三種方式我在本地測試發現訪問效率從高到底,具體原因還待分析。

2.如只想使用長鏈結而不是鏈結池的話,可以直接將下面物件用static方式宣告即可:  

protected static redisclient redis = new redisclient("10.0.4.227", 6379);

這樣在redis服務端顯示只有乙個客戶鏈結

3.與memcached測試過程中發現,在儲存時兩者效率接近(使用本文第一種方式),在取資料時memcached速度比redis要快一些(毫秒級差異),這一點並不像網上一些文章所說的那樣,看來在實際開發和生產環境下還要以使用背景及結果為準。

/files/daizhj/redis.sample.rar

深入理解Git的實現原理(windows平台下)

本文適合對git有過接觸,但知其然不知其所以然的小夥伴,也適合想要學習git的初學者,通過這篇文章,能讓大家對git有豁然開朗的感覺。在寫作過程中,我力求通俗易懂,深入淺出,不堆砌概念。你能夠從本文中了解以下知識 git是什麼 git能夠解決哪些問題 git的實現原理git是一種分布式版本控制系統。...

gogoprotobuf在windows上遇見的坑

接下來你要編譯gogo的protoc gen go檔案,進入github.com gogo protobuf protoc gen gogofast和github.com gogo protobuf protoc gen gogo 這裡我就選用了這2個 使用go build命令生成可執行檔案。並將生...

sqlite使用說明及在POWERPC平台上的移植

sqlite是乙個開源的嵌入式關聯式資料庫,它在2000年由d.richard hipp發布,它的減少應用程式管理資料的開銷,sqlite可移植性好,可以工作在許多嵌入式作業系統下,比如qnx,vxworks,palm os,symbin和windows ce,同時,sqlite是乙個輕量級的嵌入式...