.NET平台下Redis使用(三)【ServiceStack.Redis学习】
MVC4项目下对redis进行增删该查Models文件下实体类:public class Book{
public string BookName {get;set;}
public string Author {get;set;}
public string Edition {get;set;}
public string Publisher {get;set;}
public string Summary { get; set; }
public long Id { get; set; }
public int InStock { get; set; }
}
[*]1
[*]2
[*]3
[*]4
[*]5
[*]6
[*]7
[*]8
[*]9
[*]10
[*]1
[*]2
[*]3
[*]4
[*]5
[*]6
[*]7
[*]8
[*]9
[*]10
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
}
[*]1
[*]2
[*]3
[*]4
[*]5
[*]1
[*]2
[*]3
[*]4
[*]5
BookService.cs代码: public class BookService : Service
{
public IRepository Repository { get; set; }
public object Post(AddBook request)
{
var id = Repository.AddBook(request.ISBN, request.BookName, request.Author, request.Edition, request.Publisher, request.Summary);
return new AddBookResponse { ISBN = id };
}
public object Get(Books request)
{
return new BooksResponse{ books = Repository.GetBooks()};
}
}
public class BooksResponse
{
public IEnumerable<Book> books { get; set; }
}
public class Books
{
}
public class AddBook
{
public long ISBN { get; set; }
public string BookName { get; set; }
public string Author { get; set; }
public string Edition { get; set; }
public string Publisher { get; set; }
public string Summary { get; set; }
public int InStock { get; set; }
}
public class AddBookResponse
{
public long ISBN { get; set; }
}
[*]1
[*]2
[*]3
[*]4
[*]5
[*]6
[*]7
[*]8
[*]9
[*]10
[*]11
[*]12
[*]13
[*]14
[*]15
[*]16
[*]17
[*]18
[*]19
[*]20
[*]21
[*]22
[*]23
[*]24
[*]25
[*]26
[*]27
[*]28
[*]29
[*]30
[*]31
[*]32
[*]33
[*]34
[*]35
[*]36
[*]37
[*]38
[*]39
[*]40
[*]41
[*]42
[*]43
[*]44
[*]1
[*]2
[*]3
[*]4
[*]5
[*]6
[*]7
[*]8
[*]9
[*]10
[*]11
[*]12
[*]13
[*]14
[*]15
[*]16
[*]17
[*]18
[*]19
[*]20
[*]21
[*]22
[*]23
[*]24
[*]25
[*]26
[*]27
[*]28
[*]29
[*]30
[*]31
[*]32
[*]33
[*]34
[*]35
[*]36
[*]37
[*]38
[*]39
[*]40
[*]41
[*]42
[*]43
[*]44
Repository.cs代码: public interface IRepository
{
long AddBook(long ISBN, string BookName, string Author, string Edition, string Publisher, string Summary);
IEnumerable<Book> GetBooks();
Book GetBooks(long isbn);
void UpdateStock(Book book);
}
public class Repository : IRepository
{
IRedisClientsManager RedisManager { get; set; }
public Repository(IRedisClientsManager redisManager)
{
RedisManager = redisManager;
}
public IEnumerable<Book> GetBooks()
{
using (var redisClient = RedisManager.GetClient())
{
var redisUsers = redisClient.As<Book>();
return redisUsers.GetAll();
}
}
public Book GetBooks(long isbn)
{
using (var redisClient = RedisManager.GetClient())
{
var redisUsers = redisClient.As<Book>();
return redisUsers.GetById(isbn);
}
}
public long AddBook(long isbn, string bookName, string author, string edition, string publisher, string summary)
{
using (var redisClient = RedisManager.GetClient())
{
var redisUsers = redisClient.As<Book>();
if(redisUsers.GetById(isbn) !=null)
{
var book = GetBooks(isbn);
book.InStock++;
UpdateStock(book);
return isbn;
}
else
{
var book = new Book() { Id = isbn, BookName = bookName, Author = author, Edition = edition, Publisher = publisher, Summary = summary, InStock = 1 };
redisUsers.Store(book);
return isbn;
}
}
}
public void UpdateStock(Book book)
{
using (var redisClient = RedisManager.GetClient())
{
var redisUsers = redisClient.As<Book>();
redisUsers.Store(book);
};
}
}
[*]1
[*]2
[*]3
[*]4
[*]5
[*]6
[*]7
[*]8
[*]9
[*]10
[*]11
[*]12
[*]13
[*]14
[*]15
[*]16
[*]17
[*]18
[*]19
[*]20
[*]21
[*]22
[*]23
[*]24
[*]25
[*]26
[*]27
[*]28
[*]29
[*]30
[*]31
[*]32
[*]33
[*]34
[*]35
[*]36
[*]37
[*]38
[*]39
[*]40
[*]41
[*]42
[*]43
[*]44
[*]45
[*]46
[*]47
[*]48
[*]49
[*]50
[*]51
[*]52
[*]53
[*]54
[*]55
[*]56
[*]57
[*]58
[*]59
[*]60
[*]61
[*]62
[*]63
[*]64
[*]65
[*]66
[*]67
[*]68
[*]69
[*]70
[*]71
[*]72
[*]73
[*]1
[*]2
[*]3
[*]4
[*]5
[*]6
[*]7
[*]8
[*]9
[*]10
[*]11
[*]12
[*]13
[*]14
[*]15
[*]16
[*]17
[*]18
[*]19
[*]20
[*]21
[*]22
[*]23
[*]24
[*]25
[*]26
[*]27
[*]28
[*]29
[*]30
[*]31
[*]32
[*]33
[*]34
[*]35
[*]36
[*]37
[*]38
[*]39
[*]40
[*]41
[*]42
[*]43
[*]44
[*]45
[*]46
[*]47
[*]48
[*]49
[*]50
[*]51
[*]52
[*]53
[*]54
[*]55
[*]56
[*]57
[*]58
[*]59
[*]60
[*]61
[*]62
[*]63
[*]64
[*]65
[*]66
[*]67
[*]68
[*]69
[*]70
[*]71
[*]72
[*]73
HomeController.cs代码:public class HomeController : Controller
{
//
// GET: /Home/
public ViewResult Index(int? page)
{
using (var redisClient = new RedisClient("127.0.0.1", 6379, "123456", 1))
{
var pageIndex = page ?? 1;
var pageSize = 20;
var redisUsers = redisClient.As<Book>();
var books = redisUsers.GetAll().OrderByDescending(a => a.Id).ToPagedList(pageIndex, pageSize);
ViewBag.pageOfBooks = books;
return View();
}
}
}
[*]1
[*]2
[*]3
[*]4
[*]5
[*]6
[*]7
[*]8
[*]9
[*]10
[*]11
[*]12
[*]13
[*]14
[*]15
[*]16
[*]17
[*]1
[*]2
[*]3
[*]4
[*]5
[*]6
[*]7
[*]8
[*]9
[*]10
[*]11
[*]12
[*]13
[*]14
[*]15
[*]16
[*]17
AdminController.cs代码: public class AdminController : Controller
{
private readonly static string getBookInfoUri = "http://isbndb.com/api/v2/json/KWC08NFB/book/";
//http://isbndb.com/api/v2/json//book/9780849303159
// GET: /Admin/
public ActionResult Index()
{
using (var redisClient = new RedisClient("127.0.0.1",6379,"123456",1))
{
var redisUsers = redisClient.As<Book>();
ViewBag.pageOfBooks = redisUsers.GetAll();
return View();
}
}
public ActionResult PersonList()
{
using (var redisClient = new RedisClient("127.0.0.1", 6379, "123456", 1))
{
var redisPerson = redisClient.As<Person>();
ViewBag.pageOfPersons = redisPerson.GetAll();
return View();
}
}
//
public ActionResult CreateFromId(string isbn)
{
string fullUri = getBookInfoUri + isbn;
HttpWebRequest webRequest = GetWebRequest(fullUri);
HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse();
string jsonResponse = string.Empty;
using (StreamReader sr = new StreamReader(response.GetResponseStream()))
{
jsonResponse = sr.ReadToEnd();
}
JObject o = JObject.Parse(jsonResponse);
Book newBook = new Book();
newBook.Id = long.Parse(isbn);
newBook.BookName = (string)o["data"]["title"];
newBook.Author = (string)o["data"]["author_data"]["name"];
newBook.Edition = (string)o["data"]["edition_info"];
newBook.Publisher = (string)o["data"]["publisher_text"];
newBook.Summary = (string)o["data"]["summary"];
using (var redisClient = new RedisClient("127.0.0.1", 6379, "123456", 1))
{
var redisUsers = redisClient.As<Book>();
//添加单条数据
redisUsers.Store(newBook);
//添加多条数据
//redisUsers.StoreAll(ListBook);
//查询
//Linq支持
ViewBag.pageOfBooks = redisUsers.GetAll();
//return View();
}
return View("Index");
}
public ActionResult CreatePerson()
{
Person p1 = new Person() { Id = 1, Name = "刘备" };
Person p2 = new Person() { Id = 2, Name = "关羽" };
Person p3 = new Person() { Id = 3, Name = "张飞" };
Person p4 = new Person() { Id = 4, Name = "曹操" };
Person p5 = new Person() { Id = 5, Name = "典韦" };
Person p6 = new Person() { Id = 6, Name = "郭嘉" };
List<Person> ListPerson = new List<Person>() { p2, p3, p4, p5, p6 };
using (IRedisClient RClient = new RedisClient("127.0.0.1", 6379, "123456", 1))
{
IRedisTypedClient<Person> IRPerson = RClient.As<Person>();
IRPerson.DeleteAll();
//------------------------------------------添加--------------------------------------------
//添加单条数据
IRPerson.Store(p1);
//添加多条数据
IRPerson.StoreAll(ListPerson);
//------------------------------------------查询--------------------------------------------
//Linq支持
Response.Write(IRPerson.GetAll().Where(m => m.Id == 1).First().Name); //刘备
//注意,用IRedisTypedClient的对象IRPerson的Srore()添加的才能用IRPerson()方法读取
Response.Write(IRPerson.GetAll().First(m => m.Id == 2).Name); //关羽
//------------------------------------------删除--------------------------------------------
/*
IRPerson.Delete(p1); //删除 刘备
Response.Write(IRPerson.GetAll().Count()); //5
IRPerson.DeleteById(2); //删除 关羽
Response.Write(IRPerson.GetAll().Count()); //4
IRPerson.DeleteByIds(new List<int> { 3, 4 }); //删除张飞 曹操
Response.Write(IRPerson.GetAll().Count()); //2
IRPerson.DeleteAll(); //全部删除
Response.Write(IRPerson.GetAll().Count()); //0
*/
}
return Content("");
}
public ActionResult Create(Book bookInfo)
{
return RedirectToAction("Index");
}
private static HttpWebRequest GetWebRequest(string formattedUri)
{
Uri serviceUri = new Uri(formattedUri, UriKind.Absolute);
return (HttpWebRequest)System.Net.WebRequest.Create(serviceUri);
}
}
[*]1
[*]2
[*]3
[*]4
[*]5
[*]6
[*]7
[*]8
[*]9
[*]10
[*]11
[*]12
[*]13
[*]14
[*]15
[*]16
[*]17
[*]18
[*]19
[*]20
[*]21
[*]22
[*]23
[*]24
[*]25
[*]26
[*]27
[*]28
[*]29
[*]30
[*]31
[*]32
[*]33
[*]34
[*]35
[*]36
[*]37
[*]38
[*]39
[*]40
[*]41
[*]42
[*]43
[*]44
[*]45
[*]46
[*]47
[*]48
[*]49
[*]50
[*]51
[*]52
[*]53
[*]54
[*]55
[*]56
[*]57
[*]58
[*]59
[*]60
[*]61
[*]62
[*]63
[*]64
[*]65
[*]66
[*]67
[*]68
[*]69
[*]70
[*]71
[*]72
[*]73
[*]74
[*]75
[*]76
[*]77
[*]78
[*]79
[*]80
[*]81
[*]82
[*]83
[*]84
[*]85
[*]86
[*]87
[*]88
[*]89
[*]90
[*]91
[*]92
[*]93
[*]94
[*]95
[*]96
[*]97
[*]98
[*]99
[*]100
[*]101
[*]102
[*]103
[*]104
[*]105
[*]106
[*]107
[*]108
[*]109
[*]110
[*]111
[*]112
[*]113
[*]114
[*]115
[*]116
[*]117
[*]118
[*]119
[*]120
[*]121
[*]122
[*]123
[*]124
[*]125
[*]126
[*]127
[*]128
[*]129
[*]130
[*]131
[*]132
[*]1
[*]2
[*]3
[*]4
[*]5
[*]6
[*]7
[*]8
[*]9
[*]10
[*]11
[*]12
[*]13
[*]14
[*]15
[*]16
[*]17
[*]18
[*]19
[*]20
[*]21
[*]22
[*]23
[*]24
[*]25
[*]26
[*]27
[*]28
[*]29
[*]30
[*]31
[*]32
[*]33
[*]34
[*]35
[*]36
[*]37
[*]38
[*]39
[*]40
[*]41
[*]42
[*]43
[*]44
[*]45
[*]46
[*]47
[*]48
[*]49
[*]50
[*]51
[*]52
[*]53
[*]54
[*]55
[*]56
[*]57
[*]58
[*]59
[*]60
[*]61
[*]62
[*]63
[*]64
[*]65
[*]66
[*]67
[*]68
[*]69
[*]70
[*]71
[*]72
[*]73
[*]74
[*]75
[*]76
[*]77
[*]78
[*]79
[*]80
[*]81
[*]82
[*]83
[*]84
[*]85
[*]86
[*]87
[*]88
[*]89
[*]90
[*]91
[*]92
[*]93
[*]94
[*]95
[*]96
[*]97
[*]98
[*]99
[*]100
[*]101
[*]102
[*]103
[*]104
[*]105
[*]106
[*]107
[*]108
[*]109
[*]110
[*]111
[*]112
[*]113
[*]114
[*]115
[*]116
[*]117
[*]118
[*]119
[*]120
[*]121
[*]122
[*]123
[*]124
[*]125
[*]126
[*]127
[*]128
[*]129
[*]130
[*]131
[*]132
Admin视图文件夹:Index.cshtml内容:@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Admin</h2>
<table>
<tr>
<th>
ISBN
</th>
<th>
Book Name
</th>
<th>
Author
</th>
<th>
Edition
</th>
<th>
Number In Stock
</th>
<th></th>
</tr>
@foreach (var item in ViewBag.pageOfBooks)
{
<tr>
<td>
@item.Id
</td>
<td>
@item.BookName
</td>
<td>
@item.Author
</td>
<td>
@item.Edition
</td>
<td>
@item.InStock
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.Id }) |
@Html.ActionLink("Details", "Details", new { id=item.Id }) |
@Html.ActionLink("Delete", "Delete", new { id=item.Id })
</td>
</tr>
}
</table>
[*]1
[*]2
[*]3
[*]4
[*]5
[*]6
[*]7
[*]8
[*]9
[*]10
[*]11
[*]12
[*]13
[*]14
[*]15
[*]16
[*]17
[*]18
[*]19
[*]20
[*]21
[*]22
[*]23
[*]24
[*]25
[*]26
[*]27
[*]28
[*]29
[*]30
[*]31
[*]32
[*]33
[*]34
[*]35
[*]36
[*]37
[*]38
[*]39
[*]40
[*]41
[*]42
[*]43
[*]44
[*]45
[*]46
[*]47
[*]48
[*]49
[*]50
[*]51
[*]52
[*]53
[*]54
[*]55
[*]1
[*]2
[*]3
[*]4
[*]5
[*]6
[*]7
[*]8
[*]9
[*]10
[*]11
[*]12
[*]13
[*]14
[*]15
[*]16
[*]17
[*]18
[*]19
[*]20
[*]21
[*]22
[*]23
[*]24
[*]25
[*]26
[*]27
[*]28
[*]29
[*]30
[*]31
[*]32
[*]33
[*]34
[*]35
[*]36
[*]37
[*]38
[*]39
[*]40
[*]41
[*]42
[*]43
[*]44
[*]45
[*]46
[*]47
[*]48
[*]49
[*]50
[*]51
[*]52
[*]53
[*]54
[*]55
PersonList.cshtml内容:@model dynamic
@{
ViewBag.Title = "Person";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Admin</h2>
<table>
<tr>
<th>
ID
</th>
<th>
名字
</th>
<th>
功能
</th>
</tr>
@foreach (var item in ViewBag.pageOfPersons)
{
<tr>
<td>
@item.Id
</td>
<td>
@item.Name
</td>
<td>
@*@Html.ActionLink("Edit", "Edit", new { id = item.Id }) |
@Html.ActionLink("Details", "Details", new { id = item.Id }) |
@Html.ActionLink("Delete", "Delete", new { id = item.Id })*@
</td>
</tr>
}
</table>
[*]1
[*]2
[*]3
[*]4
[*]5
[*]6
[*]7
[*]8
[*]9
[*]10
[*]11
[*]12
[*]13
[*]14
[*]15
[*]16
[*]17
[*]18
[*]19
[*]20
[*]21
[*]22
[*]23
[*]24
[*]25
[*]26
[*]27
[*]28
[*]29
[*]30
[*]31
[*]32
[*]33
[*]34
[*]35
[*]36
[*]37
[*]38
[*]39
[*]1
[*]2
[*]3
[*]4
[*]5
[*]6
[*]7
[*]8
[*]9
[*]10
[*]11
[*]12
[*]13
[*]14
[*]15
[*]16
[*]17
[*]18
[*]19
[*]20
[*]21
[*]22
[*]23
[*]24
[*]25
[*]26
[*]27
[*]28
[*]29
[*]30
[*]31
[*]32
[*]33
[*]34
[*]35
[*]36
[*]37
[*]38
[*]39
Home视图文件夹:Index.cshtml内容:@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
@using PagedList.Mvc;
@using PagedList;
@foreach (var item in ViewBag.pageOfBooks)
{
<div class ="bookSmall">
<h3>@item.BookName</h3>
<p>@item.Author</p>
<p>@item.Edition</p>
<p>@item.InStock</p>
@Html.ActionLink("More Details", "Details", new { Id = item.Id})
</div>
}
[*]1
[*]2
[*]3
[*]4
[*]5
[*]6
[*]7
[*]8
[*]9
[*]10
[*]11
[*]12
[*]13
[*]14
[*]15
[*]16
[*]17
[*]1
[*]2
[*]3
[*]4
[*]5
[*]6
[*]7
[*]8
[*]9
[*]10
[*]11
[*]12
[*]13
[*]14
[*]15
[*]16
[*]17
运行结果如图:
文档来源:51CTO技术博客https://blog.51cto.com/u_11990719/3101719
页:
[1]