class User
{
public string ID { get; set; }
public string Name { get; set; }
public string Address { get; set; }
}
引用
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Newtonsoft.Json; //需要nuget包引入Newtonsoft
using ServiceStack.Redis;
1.redis 单个值存取读取
using (IRedisClient client = new RedisClient("127.0.0.1", 6379))
{
//删除当前数据库中的所有Key
client.FlushDb();
Console.WriteLine("0k");
//新增key 默认的是做了序列化存储
client.Set<string>("name", "clay");
//读取 一般不建议使用 会显示双引号
var values = client.GetValue("name");
Console.WriteLine(values);
//推荐使用,帮助我们反序列化
var values1 = client.Get<string>("name");
Console.WriteLine(values1);
var values2 = client.GetValue("name");
Console.WriteLine(JsonConvert.DeserializeObject<string>(values2));
}
2 批量操作
using (IRedisClient client = new RedisClient("127.0.0.1", 6379))
{
//删除当前数据库中的所有Key
client.FlushDb();
Console.WriteLine("0k");
var dics = new Dictionary<string, string>();
dics.Add("id", "001");
dics.Add("name", "clacy");
dics.Add("address", "南京");
client.SetAll(dics);
//批量读取
var a = client.GetAll<string>(new string[] { "id", "name", "address" });
foreach (var d in a)
{
Console.WriteLine(d);
}
}
using (IRedisClient client = new RedisClient("127.0.0.1", 6379)){
//删除当前数据库中的所有Key
client.FlushDb();
Console.WriteLine("0k");
//client.AppendTo("Name", "I");
//Console.WriteLine(client.Get<string>("Name"));
//client.AppendTo("Name", " Love");
//client.AppendTo("Name", " YOU");
}
5 获取之前的值,然后赋新值
using (IRedisClient client = new RedisClient("127.0.0.1", 6379)){
//删除当前数据库中的所有Key
client.FlushDb();
Console.WriteLine("0k");
client.Set("name", "clay");
var values = client.GetAndSetValue("name", "clay1");
Console.WriteLine(JsonConvert.DeserializeObject<string>(values));
Console.WriteLine("新值"+client.GetValue("name"));
}
6 自增自减
//自增
using (IRedisClient client = new RedisClient("127.0.0.1", 6379)){
//删除当前数据库中的所有Key
client.FlushDb();
Console.WriteLine("0k");
var a = client.Increment("Count", 1);
client.Increment("Count", 1);
client.Increment("Count", 1);
client.IncrementValueBy("Count", 100);
Console.WriteLine(client.Get<int>("Count"));
自减
var b= client.Decrement("countb", 1);
Console.WriteLine(b);
Console.WriteLine(client.Get<int>("countb"));
}
7 add和set的区别
using (IRedisClient client = new RedisClient("127.0.0.1", 6379)){
//删除当前数据库中的所有Key
client.FlushDb();
Console.WriteLine("0k");
//新增的时候,是判断,如果之前的又key存在。则新增失败,如果不存在,则新增才可以成功
Console.WriteLine(client.Add<string>("name", "clay"));
Console.WriteLine(client.Add<string>("name", "clay666"));
//直接替换值
Console.WriteLine(client.Set("name", 18));
Console.WriteLine(client.Set("name", 19));
Console.WriteLine(client.Set("name", 20));
//扩展的
//判断数据库中是否存在key
Console.WriteLine(client.ContainsKey("name"));
Console.WriteLine(client.ContainsKey("abc"));
//当前这个key是那种类型
client.Set<string>("name", "clay");
client.AddItemToList("list", "123");
var type = client.GetEntryType("list");
Console.WriteLine(type);
}
8 add和set的区别
using (IRedisClient client = new RedisClient("127.0.0.1", 6379)){
//删除当前数据库中的所有Key
client.FlushDb();
Console.WriteLine("0k");
//新增的时候,是判断,如果之前的又key存在。则新增失败,如果不存在,则新增才可以成功
Console.WriteLine(client.Add<string>("name", "clay"));
Console.WriteLine(client.Add<string>("name", "clay666"));
//直接替换值
Console.WriteLine(client.Set("name", 18));
Console.WriteLine(client.Set("name", 19));
Console.WriteLine(client.Set("name", 20));
//扩展的
//判断数据库中是否存在key
Console.WriteLine(client.ContainsKey("name"));
Console.WriteLine(client.ContainsKey("abc"));
//当前这个key是那种类型
client.Set<string>("name", "clay");
client.AddItemToList("list", "123");
var type = client.GetEntryType("list");
Console.WriteLine(type);
}
Hash操作
9.Hash操作
using (IRedisClient client = new RedisClient("127.0.0.1", 6379)){
client.FlushDb();
Console.WriteLine("0k");
string hashid = "stu";
client.SetEntryInHash(hashid, "name", "zhansan");
Console.WriteLine(client.GetValueFromHash(hashid, "name"));
client.SetEntryInHash(hashid, "id", "0001");
Console.WriteLine(client.GetValueFromHash(hashid, "iddd"));
client.SetEntryInHash(hashid, "age", "18");
Console.WriteLine(client.GetValueFromHash(hashid, "age"));
// 批量的操作
Dictionary<string, string> stu = new Dictionary<string, string>();
stu.Add("name", "zhangsan");
stu.Add("id", "zhangsan");
client.SetRangeInHash(hashid, stu);
//批量读取
var dic = client.GetAllEntriesFromHash(hashid);
foreach (var item in dic)
{
Console.WriteLine(item.Key + ";" + item.Value);
}
// 如果我们hash集合中已经存在了相同的k / v的时候,则新增失败,返回false,否则可以新增成功
Console.WriteLine(client.SetEntryInHashIfNotExists(hashid, "name", "clay"));
Console.WriteLine(client.SetEntryInHashIfNotExists(hashid, "name", "clay2"));
//用户信息..首先把对象做一个json序列化,然后存储在redis的string类型里面,
// 如果我们需要改变这个对象的其中一个属性值得时候,先把这个对象json字符串读取出来反序列化,
// 然后修改属性值,修改完成之后,在继续序列化存储进去
client.StoreAsHash<User>(new User { ID = "001", Name = "qjw", Address = "长沙" });
Console.WriteLine(client.GetFromHash<User>("001").Address);
}
10.读取hash里面key总数
using (IRedisClient client = new RedisClient("127.0.0.1", 6379)){
client.FlushDb();
Console.WriteLine("0k");
Dictionary<string, string> stu = new Dictionary<string, string>();
stu.Add("name", "zhangsan");
stu.Add("id", "001");
client.SetRangeInHash(hashid, stu);
Console.WriteLine(client.GetHashCount(hashid));
}
11 读取hash里面所有的key值与所有的value\
using (IRedisClient client = new RedisClient("127.0.0.1", 6379)){
client.FlushDb();
Console.WriteLine("0k");
Dictionary<string, string> stu = new Dictionary<string, string>();
stu.Add("name", "zhangsan");
stu.Add("id", "001");
client.SetRangeInHash(hashid, stu);
var key = client.GetHashKeys(hashid);
foreach (var item in key)
{
Console.WriteLine(item);
}
var values = client.GetHashValues(hashid);
foreach (var item in values)
{
Console.WriteLine(item);
}
}
12 删除hash数据中的key的数据
using (IRedisClient client = new RedisClient("127.0.0.1", 6379)){
client.FlushDb();
Console.WriteLine("0k");
string hashid = "stu";
Dictionary<string, string> stu = new Dictionary<string, string>();
stu.Add("name", "zhangsan");
stu.Add("id", "001");
client.SetRangeInHash(hashid, stu);
var key = client.RemoveEntryFromHash(hashid, "id");
Console.WriteLine(client.GetHashCount(hashid));
}
13 判断hashid数据集中是否存在key的数据
using (IRedisClient client = new RedisClient("127.0.0.1", 6379)){
client.FlushDb();
Console.WriteLine("0k");
string hashid = "stu";
Dictionary<string, string> stu = new Dictionary<string, string>();
stu.Add("name", "zhangsan");
stu.Add("id", "001");
client.SetRangeInHash(hashid, stu);
var key = client.RemoveEntryFromHash(hashid, "id");
Console.WriteLine(client.HashContainsEntry(hashid, "id"));
Console.WriteLine(client.HashContainsEntry(hashid, "name"));
}
15 顺序添加
using (IRedisClient client = new RedisClient("127.0.0.1", 6379)){
client.FlushDb();
Console.WriteLine("0k");
string hashid = "stu";
var caocao = new User() { ID = "001", Name = "曹操" };
client.AddItemToList("list", JsonConvert.SerializeObject(caocao));
var libai = new User() { ID = "001", Name = "李白" };
client.AddItemToList("list", JsonConvert.SerializeObject(libai));
var dingwei = new User() { ID = "001", Name = "丁伟" };
client.AddItemToList("list", JsonConvert.SerializeObject(dingwei));
}
16 从前面向list添加 追加
using (IRedisClient client = new RedisClient("127.0.0.1", 6379)){
client.FlushDb();
Console.WriteLine("0k");
string hashid = "stu";
var liubei = new User() { ID = "001", Name = "刘备" };
client.PrependItemToList("list", JsonConvert.SerializeObject(liubei));
}
17 从后面向list添加 追加
using (IRedisClient client = new RedisClient("127.0.0.1", 6379)){
client.FlushDb();
Console.WriteLine("0k");
string hashid = "stu";
var liubei1 = new User() { ID = "001", Name = "刘备11" };
client.PushItemToList("list", JsonConvert.SerializeObject(liubei1));
Console.WriteLine(client.GetListCount("list"));
client.ExpireEntryAt("list", DateTime.Now.AddSeconds(20));
Task.Delay(10 * 1000).Wait();
Console.WriteLine(client.GetListCount("list"));
}
18 从后面向list添加 追加
using (IRedisClient client = new RedisClient("127.0.0.1", 6379)){
client.FlushDb();
Console.WriteLine("0k");
string hashid = "stu";
var liubei1 = new User() { ID = "001", Name = "刘备11" };
client.PushItemToList("list", JsonConvert.SerializeObject(liubei1));
Console.WriteLine(client.GetListCount("list"));
client.ExpireEntryAt("list", DateTime.Now.AddSeconds(20));
Task.Delay(10 * 1000).Wait();
Console.WriteLine(client.GetListCount("list"));
}
19.批量操作
using (IRedisClient client = new RedisClient("127.0.0.1", 6379)){
client.FlushDb();
Console.WriteLine("0k");
string client.AddRangeToList("list", new List<string>() { "001", "002", "003" });
var a = client.GetRangeFromList("list", 0, 1);//下标0开始读 读到下表为1的 就是一个List集合 需要遍历打印值
Console.WriteLine(a);
foreach (var item in a)
{
Console.WriteLine(item);
}
// 实际效果打印 001 002 = "stu";
}
20 list 栈操作,后进先出
using (IRedisClient client = new RedisClient("127.0.0.1", 6379)){
client.FlushDb();
Console.WriteLine("0k");
var caocao = new User() { ID = "001", Name = "曹操" };
client.AddItemToList("list", JsonConvert.SerializeObject(caocao));
var libai = new User() { ID = "001", Name = "李白" };
client.AddItemToList("list", JsonConvert.SerializeObject(libai));
var dingwei = new User() { ID = "001", Name = "丁伟" };
client.AddItemToList("list", JsonConvert.SerializeObject(dingwei));
// 移除尾部,并返回结果
Console.WriteLine(client.RemoveEndFromList("list"));
Console.WriteLine(client.RemoveEndFromList("list"));
Console.WriteLine(client.RemoveEndFromList("list"));
// 移除尾部,并返回结果
Console.WriteLine(client.RemoveStartFromList("list"));
Console.WriteLine(client.RemoveStartFromList("list"));
Console.WriteLine(client.RemoveStartFromList("list"));
}