StackExchange.Redis官方文档(四)【键、值以及通道】

使用 StackExchange.Redis 在 C# 中开始使用 Redis Redis(Remote Dictionary Server)是一个开源的、内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。Redis 支持多种类型的数据结构,如字符串(strings)、哈希表(hashes)、列表(lists)、集合(sets)、有序集合(sorted sets)与位图(bitmaps)、超日志(hyperloglogs)和地理空间(geospatial)索引半径查询等。 阅读详情

键、值以及通道

在对待Redis时候,键和其他的事物之间有个相当重要的区别。键是在数据库中一段数据的唯一标识(可能String,List,Hash或者其他的Redis数据类型)。键是没有任何实质意义,就是一个简单的名字。进一步说:当处理集群或者分片系统时,它就是定义在包含数据的节点上的Key,所以对于命令传送来说key是至关重要的。

值是相对于键来存储的。要么是单个(String数据)要么一组组的。值不会影响命令的传送(注意:除了SORT命令,并且该命令与BY或者GET组合使用的时候,但是这个真的很难解释说明;详细可以去看Redis的SORT命令文档)。值通常会被Redis以操作为目的来解读:

  • inc (各种类似的命令)解读字符串值作为数字数据

  • 排序:值要么以数值或以Unicode规则来排序

  • 还有很多其他的

关键点在于API需要明白什么是Key和什么是Value。这个涉及到StackExchange.Redis的API,但是大多数时候你根本不需要知道这个。

当你在使用发布/订阅时,我们是使用通道来处理的;通道不影响到命令传送(所以它们不是Keys),但是这与常规值是区别巨大的,所以应该分别考虑。

Keys

StackExchange.Redis中键的类型是 RedisKey。不过好在它会隐式的从 string 和 byte[] 转换,允许使用文本和二进制键。例如:StringIncrement 方法将 RedisKey 作为第一个参数,但是你不需要自己去做转换,例如:

string key = ...
db.StringIncrement(key);

或者

byte[] key = ...
db.StringIncrement(key);

同样的,有一些方法能够返回 RedisKey 类型的key;如下所示:

string someKey = db.KeyRandom();

Values

StackExchange.Redis中的值的类型是 RedisValue。与 RedisKey 一样,它也可以隐式转换;这意味着你大多数时候都看不到该类型,例如:

db.StringSet("mykey", "myvalue");

然而,除了文本和二进制内容外,值还可以被表示为其他原生类型,如:Int32, Int64, Double, Boolean。正因为如此,RedisValue 提供了大量的隐式转换支持,而 RedisKey 则没有这么多:

db.StringSet("mykey", 123); // 这仍旧是一个RedisKey 和 RedisValue
...
int i = (int)db.StringGet("mykey");

注意:从原生类型到 RedisValue 的转换都是隐式的,但是从 RedisValue 转换为原生类型是显示转换:如果数据没有一个适当的值,这些转换很有可能会失败。

注意:当值是数值类型时,Redis去获取一个不存在(no-existent)的键值时,该值会以数值0返回;为了一致性,nil响应被视作为0:

db.KeyDelete("abc");
int i = (int)db.StringGet("abc"); // 这个会被作为0返回

如果你需要检测nil条件,那么你可以这样做:

db.KeyDelete("abc");
var value = db.StringGet("abc");
bool isNil = value.IsNull; // 这个表示真

或者这样做更简单,使用 Nullable\

db.KeyDelete("abc");
var value = (int?)db.StringGet("abc"); // 正如你所期望的,会返回空

Hashes

由于哈希表中的字段名不会影响到命令的传送,他们也不是key,但是文本和二进制可以作为名字使用;因此它们被视作为值。

Channels

发布/订阅所使用的管道名字的类型是 RedisChannel;大致上来说和 RedisKey 相同,但是被独立处理的,因为管道名称是头等公民,它们不会影响命令的传输。

Scripting

Redis中的Lua脚本有两个值得注意的特性:

  • 输入必须保证键值分离(在脚本内会分别变成 KEYS 和 ARGV)

  • 返回的格式没有被预先定义:这取决于你的脚本

由于这个原因,ScriptEvaluate 方法接受两个单独的输入数组:一个是作为Key的 RedisKey[],一个是作为Value的 RedisValue[] (两个都是可选的,如果省略则被假定为空)。这可能是少数几次中的一次你真的需要在你的代码中输入 RedisKey或RedisValue,而这只是因为数组变量的规则决定的。

var result = db.ScriptEvaluate(TransferScript,
    new RedisKey[] { from, to }, new RedisValue[] { quantity });

TransferScript 是一些包含Lua的字符串,在这个例子中不会展示

响应使用类型的是 RedisResult (这是脚本所独有的,通常API会试图尽可能直接和清晰的表示响应)。之前,RedisResult 提供了一系列的转换操作,甚至超过了 RedisValue,因为除了被解释为文本,二进制,原生类型以及可空类型,响应也可以被解释为数组,例如:

string[] items = db.ScriptEvaluate(...);

总结

API中使用的类型是非常刻意的被选择的,以便区分Redis的Key和Value。然而,几乎在所有情况下,你不需要直接引用所涉及的基础类型,默认提供了转换操作。

C#客户端(StackExchange.Redis) 连接Redis 最近因为需要,为小白客户提供各种语言的Redis连接示例。其中包括了C#(StackExchange.Redis)。 废话不多说,以华为云分布式缓存服务(for Redis)为例,分享一下Redis的C#客户端连接配置过程。 1. 首先我在华为云上买了一个Redis缓存实例。同时也买了一台ECS服务器,选了Windows Server 2012。 2. 在ECS上安装VS 2017社区版,因... 阅读详情

相关推荐

Redis与C#集成示例:StackExchange.Redis操作指南

Redis是一个开源的高性能键值存储数据库,以其在数据结构服务器领域的卓越性能而闻名。作为内存中的数据结构存储,它支持多种类型的数据结构,如字符串(strings)、哈希(hash)、列表(lists)、集合(sets)、有序集合(sorted sets)、位图(bitmaps)、超日志(hyperloglogs)和地理空间索引(geospatial indexes)。Redis的高性能和灵活性使其成为构建复杂应用程序的理想选择,特别是在需要高速读写能力和多样数据结构的场景中。

weixin_29476595的博客 1245

StackExchange.Redis的常用数据类型

一、CommandFlags 枚举 None = 0; //默认 HighPriority = 1; //不用了,废弃 FireAndForget = 2; //对结果不感兴趣,调用者将会立即收到默认值 PreferMaster = 0; //如果主服务器可用,则应在主服务器上执行此操作,但可以执行读操作 DemandMaster = 4; //此操作只应在[主站]上执行 PreferSlave ...

极客神殿 1907

Nacos 2.3.2实战:5分钟搞定达梦数据库插件配置(含避坑指南)

本文详细介绍了在Nacos 2.3.2中配置达梦数据库数据源插件的完整实战流程。通过解析SPI插件机制,提供从环境准备、插件编译部署到核心配置的逐步指南,并重点分享了驱动加载、SQL兼容性等高频问题的避坑解决方案,助力开发者高效完成国产化数据库适配。

weixin_29200485的博客 498

StackExchange.Redis 官方文档(五) Keys, Values and Channels

Keys, Values and Channels 在使用redis的过程中,要注意到 key 和 everthing else 有很大不同.一个key是在同一个数据库当中一个数据片段(可能是String、List、Hash,或者其他的redis数据类型)所特有的名称。key并不会被执行。进一步来说,在使用集群或者其他的分片系统时,key定义了哪一个节点存储了这个数据。所以key对于 r...

aunmhiq5181的博客 359

windchill安装搭建(保姆式)

保姆式搭建windchill 材料准备 Vmware工具,用来创建和打开虚拟机的工具 安装系统的镜像文件 数据库安装文件,这里是Oracle数据库 Windchill的安装包 Vmware工具,用来安装和打开虚拟机的软件 Windowsserver2008的镜像工具,用来安装虚拟机环境的系统,如果你有win2007或win2010的也可以,在做虚拟机时,需要先安装系统。 Oracle数据库安装包 Windchill11M030的安装包 (安装包如有需要可以私信邮箱发送) 虚拟机安装 安装虚拟机VMware

tr1294937662的博客 6216

Unity WebGL项目如何实现画布透明,完美融入网页背景(附.jslib文件与完整配置)

本文详细解析了Unity WebGL项目实现画布透明化的技术原理与实战步骤,从.jslib文件配置到前端框架集成,帮助开发者解决默认背景色问题,实现3D内容与网页设计的无缝融合。重点介绍了透明化核心机制、常见误区及React/Vue等现代框架中的最佳实践方案。

weixin_31896061的博客 298

StackExchange.Redis之模糊搜索key

查找含有"fool"的keypublic List<string> Getkeys() { List<string> keyList = new List<string>(); ConnectionMultiplexer conn=ConnectionMultiplexer.Connect("",string.Empty); ...

weixin_33826268的博客 2053

基于aarch64分析kernel源码 六:kernel_init进程(1号进程)、kthreadd进程(2号进程)

kernel_init进程(1号进程)、kthreadd进程(2号进程)分析

OnlyLove_的博客 763

C#操作redis(StackExchange.Redis)

C#操作redis入门步骤:安装redis–安装可视化软件RedisDesktopManager–C#操作redis前两步软件的安装教程很多,这里不赘述。一、类库的选择在C#中使用Redis,一般有两种方式:1、ServiceStack.Redis,据说是Redis官方推荐使用的驱动类库,但是是收费的。2、StackExchange.Redis,可能性能要比ServiceStack.Redis差点,但是是免费的。

zhiqingcn的专栏 7306

【ros】ROS1的安装和相关使用方法

主要学习ros相关内容

Greary的博客 2375

Halcon手眼标定保姆级教程:从‘眼在手上’到‘眼到手’两种模式全解析(附代码)

本文详细解析Halcon在机器人视觉引导中的手眼标定技术,涵盖Eye-in-Hand和Eye-to-Hand两种模式,提供从硬件准备到实战代码的完整解决方案。通过精确的相机标定和坐标转换,帮助实现工业自动化中机械臂与视觉系统的高精度协同作业。

weixin_42544461的博客 207

StackExchange.Redis官方文档(八)【脚本】

脚本 我们通过 IServer.ScriptLoad(Async), IServer.ScriptExists(Async), IServer.ScriptExists(Async), IDatabase.ScriptEvaluate, 还有 IDatabaseAsync.ScriptEvaluateAsync 方法来执行 Lua脚本,使用这些方法提交执行Lua脚本到Redis。 可以使用 L

极客神殿 2894

从光耦隔离到稳定驱动:信捷伺服与STM32的硬件设计陷阱与救赎

本文深入探讨了信捷伺服驱动器与STM32微控制器配合时的硬件设计关键问题,包括光耦隔离电路选型、电源电压选择、拨码开关设置等核心环节。针对伺服驱动器的稳定驱动需求,提供了从电路设计到抗干扰策略的完整解决方案,帮助工程师规避常见陷阱,提升工业控制系统的可靠性。

gold8的专栏 310

StackExchange.Redis 官方文档

StackExchange.Redis 官方文档 原文:StackExchange.Redis 官方文档时隔多年的翻译终于完成了第六个,也是很重要的的官方文档,是介绍有关链接管理,管道流水线和多路复用的 官方地址在这里:官方文档 下面做个汇总: StackExchange.Redis 官方文档(一) Basics StackExchan...

weixin_30302609的博客 126

QGIS003:【02标注工具栏】-标注的样式、放置和属性修改

摘要:文本介绍了QGIS标注的样式、放置和属性修改

qq_31762031的博客 1916

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

StackExchange.Redis的基本用法

基本用法 StackExchange.Redis中的中心对象是名称空间中的ConnectionMultiplexer类StackExchange.Redis。这是隐藏多个服务器详细信息的对象。由于ConnectionMultiplexer功能很多,因此可以在调用方之间共享和重用它。您不应该创建ConnectionMultiplexer每个操作。它是完全线程安全的,并且可以用于此用途。在所有后续示例中,将假定您已ConnectionMultiplexer保存一个实例以供重用。但是现在,让我们创建一个。这可以

https://github.com/conanl5566 6808

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

StackExchange.Redis的基本使用

StackExchange.Redis是一款免费的操作Redis的客户端工具,我们使用这个库来简单的学习下Redis的一些基本操作 Redis默认安装好后的端口是6379 密码可以自己设置,使用命令修改 config get requirepass //获取当前密码 config set requirepass "yourpassword"//设置当前密码 代码里需引用StackExch...

飞翔的学习笔记 1万+

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

.NetCore 使用StackExchange.Redis 连接Redis

StackExchange.Redis是一个.Net平台上使用较为广泛的一个Redis封装 1.安装Redis 前提是得先在本机上安装Redis,由于我是在window上,访问以下链接下载windows安装包 https://github.com/microsoftarchive/redis/releases 若是安装在linux中,则直接访问redis.io ,redis官网上...

Stay Hungry 1万+

StackExchange.Redis 官方文档(四) KeysScan

StackExchange.Redis 官方文档(四) KeysScan 原文:StackExchange.Redis 官方文档(四) KeysScanKEYS, SCAN, FLUSHDB 方法在哪? 经常有人问这些问题: 好像并没有看到 Keys(...) 或者 Scan(...)方法?那我要怎么查询数据库里面存有哪些key? ...

weixin_30879169的博客 235

c#使用 StackExchange.Redis 封装 RedisHelper

公司一直在用.net自带的缓存,大家都知道.net自带缓存的缺点,就不多说了,不知道的可以查一查,领导最近在说分布式缓存,我们选的是redis,领导让我不忙的时候封装一下,搜索了两天,选了选第三方的插件,ServiceStack.Redis和StackExchange.Redis以前都用过,不过都是别人封装好的,今天在往项目中整合的时候,我使用的ServiceStack.Redis版本不兼容.ne...

Qin066的博客 4276

【redis学习总结】C# StackExchange Redis

链接: https://pan.baidu.com/s/1lZ0vGsQb4CHrPIdO26Q8pg 密码: fvnb文件在这里,有兴趣可以看看先一步一步封装吧。首先是ConfigurationHelperpublic static class ConfigurationHelper { internal static T Get&lt;T&gt;(string appS...

lancher2048的博客 3681

StackExchange.Redis Timeout performing 超时问题

最近在做的一个项目,用的.net core 2.1,然后缓存用的Redis,缓存相关封装是同事写的,用的驱动是StackExchange.Redis version 2.0.571 ,一直听说这个驱动并发情况下有TimeOut bug,项目开发差不多后,我压测了一下,简单的模拟30个用户持续访问某一个有用到缓存的查询接口,结果这么小的压力下超时异常出现: Timeout performing GET my_141 (5000ms), inst: 30, qu: 0, qs: 20, in: 20320, s

极客神殿 1万+

C# StackExchange.Redis 用法总结

1、安装 StackExchange.Redis 在 NuGet 中搜索 StackExchange.Redis 和 Newtonsoft.Json,直接点击按钮安装即可。 StackExchange.Redis 是 C# 操作 Redis 数据库的客户端。 Newtonsoft.Json 用来序列化 Josn 字符串及反序列化拿到对象。 2、引用及初始化 引用 using StackExchange.Redis; using Newtonsoft.Json; 初始化 redis C..

长春小佛爷的博客 4179
上一篇: StackExchange.Redis官方文档(三)【管道和多路复用器】
下一篇: StackExchange.Redis官方文档(五)【事务】
.NET跨平台
博客等级 码龄15年 6066粉丝 738原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值