using三:對redis的基本操作servicestack.common.extensions;
using
servicestack.redis;
using
servicestack.redis.generic;
using
servicestack.text;
using servicestack.redis.support;
操作方法
下面該鏈結中的原始碼包或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是乙個輕量級的嵌入式...