原来基于wcf写了一个交互框架,其中自定义了一个session队列,用于保存客户端连接的一些信息。

这几天在想如何将这个wcf框架做负载均衡,于是将session队列拆分出来,用一个共享的内存进行处理,以前接触过一下memcached,后来发现Redis比memcached更有优势。于是开始着手研究Redis。(当然 Redis仅仅存储一个客户端session似乎大才小用,直接用一个ConcurrentDictionary不就能解决么?管他呢,先研究一下咯。)

首先Redis是跨平台的,这里再废话一下,现在逐渐的开始转变,觉得只要效率高,错误小,windows和非windows又有什么关系?

还是回到自己擅长的.net windows环境中来....:)

首先安装Redis服务器,其实网上的介绍简单明了,我的目标很简单,跑起来就行,于是下载了一个Redis-x64-2.8.2400 windows版本的,解压后对redis.windows.conf文件进行配置,增加了maxheap 1024000000 最大堆的字节数

然后运行:

redis-server.exe  redis.windows.conf

正常启动,简单易用。

在通常的环境中,redis通常部署为守护进程。于是运行:

redis-server --service-install redis.windows.conf --loglevel verbose
就部署好了,可以通过windows服务中的启动停止来进行操作。
 
然后需求客户端的连接,主要针对c#:
看了两个,一个是ServiceStack,一个是StackExchange。前者网络上的支持文章较多,但是4.0以后商业化,连接有限制,好像一个小时6000次样,要么用3.0的版本,考虑过后,换成了StackExchange。
引用部署StackExchange也很简单,在vs的tools中,在NuGet控制台,运行命令:
PM> Install-Package StackExchange.Redis -Version 1.0.488
(1.0.488打包好像有些问题,运行时不对,后来用的1.0.394这个版本)
(卸载的话
PM>UnInstall-Package StackExchange.Redis -Force)
就OK了。
初步试用比较简单
static ConnectionMultiplexer redis = ConnectionMultiplexer.Connect();
IDatabase redisdb = RedisEx.redis.GetDatabase();
redisdb ....SetAdd...各种函数
这里的redis需要用一个全局的静态变量,这样会避免连接数多时,连接/断开造成的频繁操作带来的不确定问题。
最后再说一说Redis管理工具。
用了一款redis-desktop-manager的,可以查看现有Redis服务中的数据,新增和删除。
 
目前看来,以上Redis知识能让我用一阵了。如遇到什么问题,再进行补充。
以下是各工具的下载地址:
Redis: https://github.com/MSOpenTech/redis/releases
StackExchange: 不用下载了vs直接进行Nuget安装
https://www.nuget.org/packages/StackExchange.Redis/
管理工具: https://github.com/uglide/RedisDesktopManager/releases

这几天对Redis的初探,写一个阶段性的东西的更多相关文章

  1. 用C写一个web服务器(四) CGI协议

    * { margin: 0; padding: 0 } body { font: 13.34px helvetica, arial, freesans, clean, sans-serif; colo ...

  2. python_way ,day11 线程,怎么写一个多线程?,队列,生产者消费者模型,线程锁,缓存(memcache,redis)

    python11 1.多线程原理 2.怎么写一个多线程? 3.队列 4.生产者消费者模型 5.线程锁 6.缓存 memcache redis 多线程原理 def f1(arg) print(arg) ...

  3. 【原创】自己动手写一个能操作redis的客户端

    引言 redis大家在项目中经常会使用到.官网也提供了多语言的客户端供大家操作redis,如下图所示 但是,大家有思考过,这些语言操作redis背后的原理么?其实,某些大神会说 只要按照redis的协 ...

  4. 解决 Redis 只读不可写的问题

    本文转载:https://blog.csdn.net/han_cui/article/details/54767208?tdsourcetag=s_pcqq_aiomsg 解决 Redis 只读不可写 ...

  5. 用.netcore写一个简单redis驱动,调试windows版本的redis.平且给set和get命令添加参数.

    1. 下载windows版本的redis 2.开发环境vs2017  新建一个 .net core控制台. private static Socket socket = new Socket(Addr ...

  6. 学习T-io框架,从写一个Redis客户端开始

    前言   了解T-io框架有些日子了,并且还将它应用于实战,例如 tio-websocket-server,tio-http-server等.但是由于上述两个server已经封装好,直接应用就可以.所 ...

  7. 搞定redis面试--Redis的过期策略?手写一个LRU?

    1 面试题 Redis的过期策略都有哪些?内存淘汰机制都有哪些?手写一下LRU代码实现? 2 考点分析 1)我往redis里写的数据怎么没了? 我们生产环境的redis怎么经常会丢掉一些数据?写进去了 ...

  8. 用 C# 写一个 Redis 数据同步小工具

    用 C# 写一个 Redis 数据同步小工具 Intro 为了实现 redis 的数据迁移而写的一个小工具,将一个实例中的 redis 数据同步到另外一个实例中.(原本打算找一个已有的工具去做,找了一 ...

  9. 【redis前传】自己手写一个LRU策略 | redis淘汰策略

    title: 自己手写一个LRU策略 date: 2021-06-18 12:00:30 tags: - [redis] - [lru] categories: - [redis] permalink ...

随机推荐

  1. man curl_easy_setopt(原创)

    中文翻译: curl_easy_setopt(3) libcurl 手册 curl_easy_setopt(3) 名称 curl_easy_setopt -curl的设置选项概要 #include & ...

  2. asp.net web.config 设置Session过期时间

    在Asp.net中,可以有四处设置Session的过期时间:(原文作者:望月狼地址:http://www.cnblogs.com/wangyuelang0526/) 一.全局网站(即服务器)级 IIS ...

  3. java写入和写出EXCEL(含源代码)

    这两天帮老师做一个数据库,将所有实验交易的数据导入到数据库中,但是不想天天在实验室里面待着,气氛太压抑,就想着先把数据读进EXCEL中,哪天带到实验室导进去 数据原来是这样的,不同的实验有一个专门的文 ...

  4. sqlite本地保存数据

    package com.cesecsh.ics.database; import android.content.Context; import android.database.Cursor; im ...

  5. pll及其modesim仿真

    100mhz输入时钟,pll层40mhz和200zhm 进入quartus,建立工程,新建图形文件,导入pll模块,设定pll相关参数.   完成pll模块的建立,并生成pll.v文件 建立modes ...

  6. Android Webview 调用JS跳转到指定activity

    JAVA: WebView wv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(save ...

  7. js定义多行字符串

    js本身没有提供类似的定义方式,但是可以通过多行注释(/* */),已经借助function的方式来达到多行字符的定义,例如代码: var jstr = function() { var fun = ...

  8. SpringMVC 结合HttpClient调用第三方接口实现

    使用HttpClient 依赖jar包 1:commons-httpclient-3.0.jar 2:commons-logging-1.1.1.jar 3:commons-codec-1.6.jar ...

  9. mysql 事件调度

    适用于mysql 5.1 及以后版本 1.查看是否开启 show variables like '%scheduler%' 2.查看进程 show processlist 3.事件调度器默认是关闭的, ...

  10. andorid frameanimation

    Android中的逐帧动画 先来说说什么是逐帧动画,逐帧动画是一种常见的动画形式(Frame By Frame),其原理是在“连续的关键帧”中分解动画动作,也就是在时间轴的每帧上逐帧绘制不同的内容,使 ...