4、寫入數據
- protected void btnOpenDB_Click(object sender, EventArgs e)
- {
- //System.Diagnostics.Process.Start("D:\\redis\\redis-server.exe");
- //lblShow.Text = "Redis已經打開!";
- using (var redisClient = RedisManager.GetClient())
- {
- var user = redisClient.GetTypedClient<User>();
- if (user.GetAll().Count > 0)
- user.DeleteAll();
- var qiujialong = new User
- {
- Id = user.GetNextSequence(),
- Name = "qiujialong",
- Job = new Job { Position = ".NET" }
- };
- var chenxingxing = new User
- {
- Id = user.GetNextSequence(),
- Name = "chenxingxing",
- Job = new Job { Position = ".NET" }
- };
- var luwei = new User
- {
- Id = user.GetNextSequence(),
- Name = "luwei",
- Job = new Job { Position = ".NET" }
- };
- var zhourui = new User
- {
- Id = user.GetNextSequence(),
- Name = "zhourui",
- Job = new Job { Position = "Java" }
- };
- var userToStore = new List<User> { qiujialong, chenxingxing, luwei, zhourui };
- user.StoreAll(userToStore);
- lblShow.Text = "目前共有:" + user.GetAll().Count.ToString() + "人!";
- }
- }
- protected void btnInsert_Click(object sender, EventArgs e)
- {
- if (!string.IsNullOrEmpty(txtName.Text) && !string.IsNullOrEmpty(txtPosition.Text))
- {
- using (var redisClient = RedisManager.GetClient())
- {
- var user = redisClient.GetTypedClient<User>();
- var newUser = new User
- {
- Id = user.GetNextSequence(),
- Name = txtName.Text,
- Job = new Job { Position = txtPosition.Text }
- };
- user.Store(newUser);
- if (user.GetAll().Count > 0)
- {
- var htmlStr = string.Empty;
- foreach (var u in user.GetAll())
- {
- htmlStr += "<li>ID=" + u.Id + " 姓名:" + u.Name + " 所在部門:" + u.Job.Position + "</li>";
- }
- lblPeople.Text = htmlStr;
- }
- lblShow.Text = "目前共有:" + user.GetAll().Count.ToString() + "人!";
- }
- }
- }
5、刪除數據
- using (var redisClient = RedisManager.GetClient())
- {
- var user = redisClient.GetTypedClient<User>();
- var newUser = new User
- {
- Id = user.GetAll().Count,
- Name = txtName.Text,
- Job = new Job { Position = txtPosition.Text }
- };
- user.Delete(newUser);
- }
![](http://static.javashuo.com/static/loading.gif)
- using (var redisClient = RedisManager.GetClient())
- {
- var user = redisClient.GetTypedClient<User>();
- //var newUser = new User
- //{
- // Id = user.GetAll().Count,
- // Name = txtName.Text,
- // Job = new Job { Position = txtPosition.Text }
- //};
- //user.Delete(newUser);
- user.DeleteById(txtRedisId.Text);//txtRedisId.Text中爲ID值
- }
![](http://static.javashuo.com/static/loading.gif)
- using (var redisClient = RedisManager.GetClient())
- {
- var user = redisClient.GetTypedClient<User>();
- user.DeleteByIds((txtRedisId.Text).ToList());//txtRedisId.Text中爲ID值
- }
![](http://static.javashuo.com/static/loading.gif)
- var user = redisClient.GetTypedClient<User>();
- user.DeleteAll();//刪除所有數據
6、查詢數據
- using (var redisClient = RedisManager.GetClient())
- {
- var user = redisClient.GetTypedClient<User>();
- var userList = user.GetAll().Where(x => x.Job.Position.Contains(txtScreenPosition.Text)).ToList();
- if (userList.Count > 0)
- {
- var htmlStr = string.Empty;
- foreach (var u in userList)
- {
- htmlStr += "<li>ID=" + u.Id + " 姓名:" + u.Name + " 所在部門:" + u.Job.Position + "</li>";
- }
- lblPeople.Text = htmlStr;
- }
- lblShow.Text = "篩選後共有:" + userList.Count.ToString() + "人!";
- }
![](http://static.javashuo.com/static/loading.gif)
- var user = redisClient.GetTypedClient<User>();
- var userKeyList = user.GetAllKeys();
![](http://static.javashuo.com/static/loading.gif)
![](http://static.javashuo.com/static/loading.gif)
![](http://static.javashuo.com/static/loading.gif)
- using (var redisClient = RedisManager.GetClient())
- {
- var keyValue = string.Empty;
- try
- {
- var user = redisClient.GetTypedClient<User>();
- var value = user.GetValue(txtKey.Text);
- keyValue += "ID=" + value.Id + " 姓名:" + value.Name + " 所在部門:" + value.Job.Position;
- }
- catch (Exception ex)
- {
- keyValue += ex.ToString();
- }
- lblPeople.Text = keyValue.ToJson();
- lblShow.Text = string.Empty;
- }
![](http://static.javashuo.com/static/loading.gif)
7、修改數據html
在上一篇 C# Redis實戰(六)中介紹瞭如何查詢Redis中數據,本篇將介紹如何修改Redis中相關數據。你們都知道Redis是key-value型存儲系統,因此應該能夠修改key,也能夠根據key來修改value。接下來將是詳細的C#語言修改Redis示例。git
一、經過key修改單個value
using (var redisClient = RedisManager.GetClient())
{
var user = redisClient.GetTypedClient<User>();
var value = user.GetValue(txtChangeKey.Text);//首先先獲取當前key的值
var changedUser = new User
{
Id = value.Id,
Name = txtChangeName.Text,
Job = new Job { Position = txtChangePosition.Text }
};//設置相應的新value值,並使其它數據與原來相統一
redisClient.Set(txtChangeKey.Text, changedUser);//修改value
value = user.GetValue(txtChangeKey.Text);//根據key獲取最新的數據
var htmlStr = string.Empty;
htmlStr += "修改後的ID=" + value.Id + " 姓名:" + value.Name + " 所在部門:" + value.Job.Position;
lblPeople.Text = htmlStr;
lblShow.Text = "篩選後共有:1人!";
}github
代碼執行後效果圖以下:web
以上代碼讓Redis修改了key爲urn:user:1的人所在部門,將原先.NET修改成如今的Python,修改後所有的數據就變成了:redis
二、經過keys修改多個values
var dictionary = new Dictionary<string, User>();
using (var redisClient = RedisManager.GetClient())
{
var user = redisClient.GetTypedClient<User>();
var user1 = new User
{
Id = user.GetNextSequence(),//獲取新的ID
Name = "小明",
Job = new Job { Position = "Python" }
};
var user2 = new User
{
Id = user.GetNextSequence(),
Name = "小紅",
Job = new Job { Position = "Python" }
};
var userKeyList = user.GetAllKeys().Where(x => x.StartsWith("urn")).OrderBy(y => y).ToList();//只獲取保存value的key
dictionary.Add(userKeyList[1], user1);//第二我的
dictionary.Add(userKeyList[2], user2);//第三我的
redisClient.SetAll(dictionary);//同時修改多個value
var users = user.GetAll();
if (users.Count > 0)
{
var htmlStr = string.Empty;
foreach (var u in users)
{
htmlStr += "<li>ID=" + u.Id + " 姓名:" + u.Name + " 所在部門:" + u.Job.Position + "</li>";
}
lblPeople.Text = htmlStr;
}
lblShow.Text = "篩選後共有:" + users.Count.ToString() + "人!";
}數據庫
我須要在修改了第一我的所在部門的基礎上同時將第二我的和第三我的所在部門、姓名、ID都一併修改,執行後效果圖以下:json
三、重命名key
以上修改value的示例咱們只修改了value,可是並無改變key值。若是須要重命名key,首先,查詢Redis中全部的key函數
修改key代碼以下:
using (var redisClient = RedisManager.GetClient())
{
redisClient.RenameKey(txtKey.Text, txtNewKey.Text);
var user = redisClient.GetTypedClient<User>();
var userKeyList = user.GetAllKeys();
if (userKeyList.Count > 0)
{
lblPeople.Text = string.Empty;
var htmlStr = string.Empty;
foreach (var u in userKeyList)
{
htmlStr += "<li>key=" + u + "</li>";
}
lblPeople.Text = htmlStr;
}
lblShow.Text = "篩選後共有:" + userKeyList.Count.ToString() + " Keys!";
}ui
這樣是能夠重命名key的,以下圖:url
能夠看到urn:user:1已經不存在了,取而代之的是urn:user:5,可是若是咱們再次運行GetAll<User>()時,卻發現只有三條數據了,如圖:
在C# Redis實戰(六)中我已經提到了ids:User的概念,其實在ServiceStack.Redis的Rename中並無將重命名後的key保存在其中,這樣就會致使ids:User中只有原來的三條未修改的數據,可是seq:User中仍有六條數據。
public void Rename(string oldKeyname, string newKeyname)
{
if (oldKeyname == null)
throw new ArgumentNullException("oldKeyname");
if (newKeyname == null)
throw new ArgumentNullException("newKeyname");
SendExpectSuccess(Commands.Rename, oldKeyname.ToUtf8Bytes(), newKeyname.ToUtf8Bytes());
}
可是查詢單個key依然能夠獲得完整的數據:
能夠這麼理解,可憐的urn:user:5變成了無家可歸的孩子,不論是GetAll(),或者DeleteAll()均對其不起做用。
---------------------
做者:風同樣的大叔
來源:CSDN
原文:https://blog.csdn.net/qiujialongjjj/article/details/17298767
版權聲明:本文爲博主原創文章,轉載請附上博文連接!
![](http://static.javashuo.com/static/loading.gif)
![](http://static.javashuo.com/static/loading.gif)
![](http://static.javashuo.com/static/loading.gif)
![](http://static.javashuo.com/static/loading.gif)
![](http://static.javashuo.com/static/loading.gif)