ServiceStack.Redis 使用

环境准备

在Windows上运行Redis服务器作开发和测试是很好的,但是在运营环境还是Linux版本靠谱,下面我们就先解压Redis到一个目录下:

运行redis-server.exe 看到如下Windows控制台:

上面我们可以看到Redis运行的端口是6372

我们先玩一下Redis的客户端控制台,在相同目录下运行redis-cli.exe会弹出另一个控制台程序,可以参考Try Redis tutorial开始你的交互之旅。

输入命令 set car.make “Ford” 添加了一个car.make为Key,Value是Ford的数据进入Redis,输入命令get car.make就可以取回Ford

下面我们进入正题,讲主角ServiceStack.Redis :

首先创建一个控制台程序,然后解压缩ServiceStack.Redis-v3.00.zip ,然后添加下面的四个引用

  • ServiceStack.Common
  • ServiceStack.Interfaces
  • ServiceStack.Redis
  • ServiceStack.Text

我们下面来写些代码,创建一个Car类并存储几个实例到Redis,然后让一个对象5秒后过期,等待6秒钟后输出Car的实例数

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using ServiceStack.Redis; 
using System.Threading;

namespace RedisTutorial 

    class Program 
    { 
        static void Main(string[] args) 
        { 
            var redisClient = new RedisClient("localhost");

using (var cars = redisClient.GetTypedClient<Car>()) 
            { 
                if (cars.GetAll().Count > 0) 
                    cars.DeleteAll();

var dansFord = new Car 
                { 
                    Id = cars.GetNextSequence(), 
                    Title = "Dan‘s Ford", 
                    Make = new Make { Name = "Ford" }, 
                    Model = new Model { Name = "Fiesta" } 
                }; 
                var beccisFord = new Car 
                { 
                    Id = cars.GetNextSequence(), 
                    Title = "Becci‘s Ford", 
                    Make = new Make { Name = "Ford" }, 
                    Model = new Model { Name = "Focus" } 
                }; 
                var vauxhallAstra = new Car 
                { 
                    Id = cars.GetNextSequence(), 
                    Title = "Dans Vauxhall Astra", 
                    Make = new Make { Name = "Vauxhall" }, 
                    Model = new Model { Name = "Asta" } 
                }; 
                var vauxhallNova = new Car 
                { 
                    Id = cars.GetNextSequence(), 
                    Title = "Dans Vauxhall Nova", 
                    Make = new Make { Name = "Vauxhall" }, 
                    Model = new Model { Name = "Nova" } 
                };

var carsToStore = new List<Car> { dansFord, beccisFord, vauxhallAstra, vauxhallNova }; 
                cars.StoreAll(carsToStore);

Console.WriteLine("Redis Has-> " + cars.GetAll().Count + " cars");

cars.ExpireAt(vauxhallAstra.Id, DateTime.Now.AddSeconds(5)); //Expire Vauxhall Astra in 5 seconds

Thread.Sleep(6000); //Wait 6 seconds to prove we can expire our old Astra

Console.WriteLine("Redis Has-> " + cars.GetAll().Count + " cars");

//Get Cars out of Redis 
                var carsFromRedis = cars.GetAll().Where(car => car.Make.Name == "Ford");

foreach (var car in carsFromRedis) 
                { 
                    Console.WriteLine("Redis Has a ->" + car.Title); 
                }


            Console.ReadLine(); 
        } 
    }

public class Car 
    { 
        public long Id { get; set; } 
        public string Title { get; set; } 
        public string Description { get; set; } 
        public Make Make { get; set; } 
        public Model Model { get; set; } 
    }

public class Make 
    { 
        public int Id { get; set; } 
        public string Name { get; set; } 
    }

public class Model 
    { 
        public int Id { get; set; } 
        public Make Make { get; set; } 
        public string Name { get; set; } 
    }

}

例子代码下载:RedisTutorial.zip

ServiceStack.Redis的问题与修正

性能测试:Redis千万级的数据量的性能测试

几点建议,让Redis在你的系统中发挥更大作用

Redis

时间: 2024-11-01 13:21:03

ServiceStack.Redis 使用的相关文章

C# servicestack.redis 互通 java jedis

拥抱变化,如今也走上了.net/java通吃的时代,下面就讲讲如何让.net/java都能正常访问分片的redis吧. 有几个关键点:一致性环哈希.哈希算法.序列化.反序列化 后两个都比较直接,只要选择一种跨语言的序列化方式就行了,如:json, protobuf, ace等,本文全略了 本文是基于jedis的一致性环哈希来修改的,.net选的是servicestack.redis组件来修改 无奈两个组件都有各自的一致性环哈希算法,不兼容,那就选一个作为标准,修改另一个咯.本文选择jedis的一

用C#封装的ServiceStack.redis操作类

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using ServiceStack.Redis; namespace TestRedis { class RedisHelper:IDisposable { /*[email protected] All Rights Reserved * Author:Mars

解决ASP.NET中ServiceStack.Redis每小时6000次访问请求的问题

1.可以使用3.0的版本: Install-Package ServiceStack.Redis -Version 3.0 2.使用ServiceStack.Redis.Complete: Install-Package ServiceStack.Redis.Complete -Version 1.0.0

ServiceStack.Redis之IRedisClient&lt;第三篇&gt;

事实上,IRedisClient里面的很多方法,其实就是Redis的命令名.只要对Redis的命令熟悉一点就能够非常快速地理解和掌握这些方法,趁着现在对Redis不是特别了解,我也对着命令来了解一下这些方法. 一.属性 IRedisClient的属性如下: 属性 说明 ConnectTimeout  连接超时 Db 当前数据库的ID或下标 DbSize  当前数据库的 key 的数量 HadExceptions    Hashes  存储复杂对象,一个value中有几个field  Host 

ServiceStack.Redis连接池不起作用的问题处理

在新的项目中用到了Redis做ORM的二级缓存,一开始是每次New一个新的Client去连接服务器,发现没过多久,服务器的连接池就爆掉了,于是用PooledRedisClientManager来做客户端连接池的管理,但是发现,无论怎么设置链接池的数量,客户端发起的连接数根本不受控制,还是一次一个新连接,很是郁闷,上Stackoverflow上搜了很久,没有一个办法能解决问题的,无奈之下只能连ServiceStack.Redis的源码进行调试,百般努力下终于发现端倪,罪魁祸首是下面这段代码: 由于

C# - ServiceStack.Redis

最近看了一点Redis的东西:Redis初识,见识到Redis的强大.纸上得来终觉浅,绝知此事要躬行,本文借鉴参考:.NET中使用Redis 自己去实现一个简单的Blog Demo,目的: 熟悉Redis的基本知识: 应用C#-Redis的常用组件:ServiceStack.Redis: 用户(User)可以注册一个博客(Blog),然后可以在博客上面写文章(Post),文章可以分类(Category)以及添加标签(Tag),用户可以对文章进行评论(Comment). 一个Blog Demo应该

ServiceStack.Redis 请求次数6000次异常

Redis是一个非常NB的内存级的数据库,我们可以把很多”热数据“(即读写非常多的数据)放入其中来操作,这样就减少了和关系型数据库(如SqlServer/My Sql等)之间的交互,程序的响应速度也大大提升. C#利用ServiceStack.Redis来操作Redis,它是Redis官方推荐的C#客户端,性能非常优越,使用也很方便. ServiceStack.LicenseException: The free-quota limit on '6000 Redis requests per h

ServiceStack.Redis 缓存过期,并未失效的暂时解决办法

服务器:Redis版本运行环境如图,生产环境是全内存运行. 客户端NuGet 引入:ServiceStack.Redis 加入缓存代码: /// <summary> /// Set /// </summary> /// <typeparam name="T">类型</typeparam> /// <param name="key">键</param> /// <param name=&qu

ServiceStack.Redis——Redis在.net上的客户端解决方案

ServiceStack.Redis--Redis在.net上的客户端解决方案 源码及使用: https://github.com/ServiceStack/ServiceStack.Redis 例子: https://github.com/ServiceStack/ServiceStack.Examples/tree/master/src/RedisStackOverflow 上面的例子中container.Register<IRedisClientsManager>(c => new

.NET中使用Redis之ServiceStack.Redis学习(一)安装与简单的运行

1.下载ServiceStack.Redis PM> Install-Package ServiceStack.Redis 2.vs中创建一个控制台程序 class Program { //构建Redis连接 static RedisClient redisClient = new RedisClient("127.0.0.1", 6379); static void Main(string[] args) { Console.WriteLine(string.Join(&quo