【每日更新】【Redis学习】
5.
Redis订阅和发布模式和Redis事务
4.
String可以包含任何数据,比如jpg图片或者序列化的对象;string类型是Redis最基本的数据类型,一个键最大能存储512MB
Hashes 是一个string类型的field和value的映射表,hash特别适合用于存储对象;
List列表类型可以存储一个有序的字符串列表,常用的操作时向列表两端添加元素,或者获得列表的某一个片段;列表类型内部是使用双向链表(double linked list)实现的,所以向列表两端添加元素的时间复杂度为O(I),获取越接近两端的元素,速度就越快。
列表具有有序性,集合具有唯一性。
集合Set:多个集合类型键之间还可以进行并集、交集、差集运算。
有序集合Sort-Set...
3.
Redis是一个用的比较广泛的Key/Value的内存数据库,新浪微博、Github、StackOverflow 等大型应用中都用其作为 高速缓存。
Redis本身没有提供Windows版本的,并且在Windows上也不太稳定,一般都将其部署到Linux环境下,Redis可以在其官网上下载
Beetle.Redis虽然不够完整,但是我说几个优点:
1、底层非常稳定,几乎没有性能损耗。
2、连接数非常稳定,我用了整整一个月(经过了双十一的考验),一点问题都没有。
3、代码量很小,只有十几个类,完全开源。
2.
RedisHelper帮助类
public class RedisManager
{
private static PooledRedisClientManager prcm;
/// <summary>
/// 创建链接池管理对象
/// </summary>
private static void CreateManager()
{
string[] writeServerList = SplitString(RedisConfigInfo.WriteServerList, ",");
string[] readServerList = SplitString(RedisConfigInfo.ReadServerList, ",");
prcm = new PooledRedisClientManager(readServerList, writeServerList,
new RedisClientManagerConfig
{
MaxWritePoolSize = RedisConfigInfo.MaxWritePoolSize,
MaxReadPoolSize = RedisConfigInfo.MaxReadPoolSize,
AutoStart = RedisConfigInfo.AutoStart,
});
}
private static string[] SplitString(string strSource, string split)
{
return strSource.Split(split.ToArray());
}
/// <summary>
/// 客户端缓存操作对象
/// </summary>
public static IRedisClient GetClient()
{
if (prcm == null)
CreateManager();
return prcm.GetClient();
}
/// <summary>
/// 缓存默认24小时过期
/// </summary>
public static TimeSpan expiresIn = TimeSpan.FromHours();
/// <summary>
/// 设置一个键值对,默认24小时过期
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="key"></param>
/// <param name="value"></param>
/// <param name="redisClient"></param>
/// <returns></returns>
public static bool Set<T>(string key, T value, IRedisClient redisClient)
{
return redisClient.Set<T>(key, value, expiresIn);
}
/// <summary>
/// 将某类数据插入到list中
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="key">一般是BiaoDiGuid</param>
/// <param name="item"></param>
/// <param name="redisClient"></param>
public static void Add2List<T>(string key, T item, IRedisClient redisClient)
{
var redis = redisClient.As<T>();
var list = redis.Lists[GetListKey(key)];
list.Add(item);
}
/// <summary>
/// 获取一个list
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="key"></param>
/// <param name="redisClient"></param>
/// <returns></returns>
public static IRedisList<T> GetList<T>(string key, IRedisClient redisClient)
{
var redis = redisClient.As<T>();
return redis.Lists[GetListKey(key)];
}
public static string GetListKey(string key, string prefix = null)
{
if (string.IsNullOrEmpty(prefix))
{
return "urn:" + key;
}
else
{
return "urn:" + prefix + ":" + key;
}
}
}
配置设置
.3将参数写入配置文件 <appSettings>
<add key="WriteServerList" value="127.0.0.1:6379" />
<add key="ReadServerList" value="127.0.0.1:6379" />
<add key="MaxWritePoolSize" value="" />
<add key="MaxReadPoolSize" value="" />
<add key="AutoStart" value="true" />
<add key="LocalCacheTime" value="" />
<add key="RecordeLog" value="false" />
</appSettings>
.4读取配置文件参数类 public class RedisConfigInfo
{
public static string WriteServerList = ConfigurationManager.AppSettings["WriteServerList"];
public static string ReadServerList = ConfigurationManager.AppSettings["ReadServerList"];
public static int MaxWritePoolSize = Convert.ToInt32(ConfigurationManager.AppSettings["MaxWritePoolSize"]);
public static int MaxReadPoolSize = Convert.ToInt32(ConfigurationManager.AppSettings["MaxReadPoolSize"]);
public static int LocalCacheTime = Convert.ToInt32(ConfigurationManager.AppSettings["LocalCacheTime"]);
public static bool AutoStart = ConfigurationManager.AppSettings["AutoStart"].Equals("true") ? true : false;
}
使用:
protected void btn1_Click(object sender, EventArgs e)
{
string UserName;
//读取数据,如果缓存存在直接从缓存中读取,否则从数据库读取然后写入redis
using (var redisClient = RedisManager.GetClient())
{
UserName = redisClient.Get<string>("UserInfo_123");
if (string.IsNullOrEmpty(UserName)) //初始化缓存
{
//TODO 从数据库中获取数据,并写入缓存
UserName = "张三";
redisClient.Set<string>("UserInfo_123", UserName, DateTime.Now.AddSeconds());
lbtest.Text = "数据库数据:" + "张三";
return;
}
lbtest.Text = "Redis缓存数据:" + UserName;
}
}
Redis安装与启动
1. 下载Redis
Redis本身没有提供Windows版本的,并且在Windows上也不太稳定,一般都将其部署到Linux环境下,Redis可以在其官网上下载, MSOpenTech中提供了Windows版本,这里为了学习安装这一版本。

点击跳转到Github后,直接点击Zip下载。下载后根据自己计算机的版本选择32位或者64位进行安装。我将64位的解压后放到D:\Redis文件夹下,同时将文件夹内的redis.conf也拷贝到该目录下,这个是redis的配置信息:

2. 启动Redis
在Windows下面启用Redis和启动MogoDB一样,需要使用命令行启动,首先定位到该目录,运行如下命令:
D:\Redis>redis-server.exe redis.conf

因为是在本机运行的,这里要注意端口号,同时要保持端口不要关闭。
当然您也可以将Redis作为Windows服务在后台一直开启。
3. 使用
现在再开一个控制台应用程序连接之前启动的Redis,如下:
D:\Redis>redis-cli.exe -h 172.16.147.121 -p 6379
其中 –h后面是本机的ip地址,后面的是端口。
然后就可以执行set 给key为city赋值:
redis 172.16.147.121:6379> set city Shanghai
通过get可以获取指定key为city的值了。
redis 172.16.147.121:6379> get city

同时,在我们往redis上写数据的时候,Redis服务也会定时的往文件中写数据

这里仅简单的介绍了get和set命令,更多命令可以查看 http://redis.io/commands
.初探Redis
下载ServiceStack.Redis
和MongoDB一样,在.NET中使用Redis其实也是使用第三方驱动,官网推荐的是使用ServiceStack.Redis 下载后解压得到如下dll

.NET项目中使用Redis
新建一个Console程序,引用上一步骤解压的四个dll。
做一个简单的例子,在.NET中获取之前我们设置的city的值。
class Program
{
static RedisClient redisClient = new RedisClient("172.16.147.121", 6379);//redis服务IP和端口
static void Main(string[] args)
{
Console.WriteLine(redisClient.Get<string>("city"));
Console.ReadKey();
}
}
首先通过 static RedisClient redisClient = new RedisClient("172.16.147.121", 6379);
建立连接 ,然后就可以直接用redisClient里面的Get方法获取 key为city的值了。

在前面的命令行中,我们网city中存入了Shanghai,现在我们获取到了这个值。
ServerStack中有很多方法可以在.NET中调用,其类结构图如下:

总结
本文简单介绍了Redis,Redis如何在Windows下安装,以及如何在.NET中使用访问和使用Redis,希望对您有所帮助,下文将讲解如何在.NET中网Redis中读写复杂对象。
【每日更新】【Redis学习】的更多相关文章
- Android学习资料PDF免费大放送,每日更新!有需要的亲看这里
说明:以前有资料分享的时候,都叫大家留下自己的QQ邮箱,这样被很多的程序猿们认为我是专门来钓你们的QQ邮箱的.为此给大家带来的顾虑,深表抱歉.从现在开始,以后的分享资料我都会放在自己的百度网盘中,提供 ...
- Redis学习笔记~目录
回到占占推荐博客索引 百度百科 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合). ...
- Redis学习笔记4-Redis配置详解
在Redis中直接启动redis-server服务时, 采用的是默认的配置文件.采用redis-server xxx.conf 这样的方式可以按照指定的配置文件来运行Redis服务.按照本Redi ...
- Redis学习笔记1-Redis的介绍和认识
说明:文章内容来自百度百科和redis官方对redis的介绍 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API ...
- Redis学习笔记一:数据结构与对象
1. String(SDS) Redis使用自定义的一种字符串结构SDS来作为字符串的表示. 127.0.0.1:6379> set name liushijie OK 在如上操作中,name( ...
- 转载:第二弹!全球首个微信小程序(应用号)开发教程!通宵吐血赶稿!每日更新!
今天一波三折,承受了超出预料的压力和煎熬,最后还是决定继续放出我的更新教程.我想我一没有泄露公司的代码,二没有提供泄露开发工具下载,只是从程序猿角度写了篇开发日志.我已经做好了最坏的准备,就算放弃这份 ...
- 【原】Redis学习资料推荐
Redis学习资料推荐 网址: Redis官网http://redis.io/ Redis命令 http://redis.io/commands Redis教程 https://www.tutoria ...
- Redis学习笔记(三)Redis支持的5种数据类型的总结
继续Redis学习笔记(二)来说说剩余的三种数据类型. 三.列表类型(List) 1.介绍 列表类型可以存储一个有序的字符串列表,常用的操作是向列表两端添加元素,或者获得列表的一段片段.列表类型内部是 ...
- Redis学习笔记(二)Redis支持的5种数据类型的总结之String和Hash
引言 在Redis学习笔记(一)中我们已经会安装并且简单使用Redis了,接下来我们一起来学习下Redis支持的5大数据类型. 简介 Redis是REmote DIctionary Server(远程 ...
- Redis学习笔记(2)——Redis的下载安装部署
一.下载Redis Redis的官网下载页上有各种各样的版本,如图 但是官网下载的Redis项目不正式支持Windows.如果需要再windows系统上部署,要去GitHub上下载.我下载的是Redi ...
随机推荐
- js实现点击按钮复制文本功能
最近项目活动中用到复制文本功能,发现在chrome中之前的clipboard的demo失效了,查了下发现是因为版本升级导致的.最新用法如下: <!DOCTYPE html> <htm ...
- DevExpress 折线图和柱状图的绘制与数据绑定
DevExpress 组件是一个非常丰富和强大的组件,适合各种可视化图形的绘制与展示,在数据分析展示中是个很有帮助的,网上也有很多关于这方面的文章,关于折线图或柱状图的画法,以下是自己在工作中接触到的 ...
- 基于wepy和云开发的动漫资讯小程序----233次元
233次元小程序 # 233次元小程序 项目描述- 基于微信小程序的动漫咨询小程序,采用`wepy`框架开发:- 后台数据采用小程序的云开发存储: 线上体验 部分截图 ...
- 常用LINUX命令汇总
一.基本命令bash Bash(GNU Bourne-Again Shell)是许多Linux平台的内定Shellpwd 查看当前所在目录ls 查看目录内所有文件cd 进入目录cd .. 返回上一层p ...
- Linux on window初体验
参照来源: https://www.cnblogs.com/enet01/p/7458767.html 1:liunx on window 的配置不多说(百度网上很多)启动开发这模式,在应用和程序中勾 ...
- loadrunner-参数化
参数化的目的: 1.数据库或应用程序对提交请求里的参数值进行唯一性校验 2.为了避免查询缓存导致的性能测试结果失真 (语法检查-语意检查-检查缓存(有直接从数据库给)没有就生成执行计划-按照执行计划去 ...
- django后台admin csv 格式表格导出
1.在app下新建一个.py文件 此例commen.py commen.py (内容)(具体怎么导出的也不知道这么写就对了) import csv from django.http import H ...
- java开发人员win10配置
1.让win10的cmd支持ll命令 新建ll.bat 编辑类容为: @echo off dir3.将该文件移动到C:\Windows下. CMD里就可以用ls来代替dir命令显示目录列表了. 2.i ...
- 通过crt修改数据库中的存储过程
mysql -u idc_user -pidc_user123 通过crt修改数据库中的存储过程PRO_RET_HD_TZXW STEP1:在crt中查看数据库中的存储过程PRO_RET_HD_TZX ...
- windows中,VS2017下,在Cmake中添加OpenCV依赖
OpenCV_DIR -----D:/OpenCV/3.3.0/opencv/build/x64/vc14/lib 只有这个目录 cmake才认..貌似是因为找到了对应的OpenCvConfig.c ...