点击或拖拽改变大小

RedisClient 类

这是一个redis的客户端类,支持读取,写入,发布订阅,但是不支持订阅,如果需要订阅,请使用另一个类RedisSubscribe
继承层次
SystemObject
  HslCommunication.Core.NetNetworkBase
    HslCommunication.Core.NetNetworkDoubleBase
      HslCommunication.Enthernet.RedisRedisClient

命名空间:  HslCommunication.Enthernet.Redis
程序集:  HslCommunication (在 HslCommunication.dll 中) 版本:12.1.2.0 (12.1.2.0)
语法
public class RedisClient : NetworkDoubleBase

RedisClient 类型公开以下成员。

构造函数
  名称说明
公共方法RedisClient(String)
实例化一个客户端对象,需要手动指定Ip地址和端口
公共方法RedisClient(String, Int32, String)
实例化一个客户端的对象,用于和服务器通信
Top
属性
  名称说明
公共属性AlienSession
当前的异形连接对象,如果设置了异形连接的话,仅用于异形模式的情况使用
The current alien connection object, if alien connection is set, is only used in the case of alien mode
(继承自 NetworkDoubleBase。)
公共属性代码示例ByteTransform
当前的数据变换机制,当你需要从字节数据转换类型数据的时候需要。
The current data transformation mechanism is required when you need to convert type data from byte data.
(继承自 NetworkDoubleBase。)
公共属性ConnectionId
当前连接的唯一ID号,默认为长度20的guid码加随机数组成,方便列表管理,也可以自己指定
The unique ID number of the current connection. The default is a 20-digit guid code plus a random number.
(继承自 NetworkDoubleBase。)
公共属性代码示例ConnectTimeOut
获取或设置连接的超时时间,单位是毫秒
Gets or sets the timeout for the connection, in milliseconds
(继承自 NetworkDoubleBase。)
公共属性代码示例IpAddress
获取或是设置远程服务器的IP地址,如果是本机测试,那么需要设置为127.0.0.1
Get or set the IP address of the remote server. If it is a local test, then it needs to be set to 127.0.0.1
(继承自 NetworkDoubleBase。)
公共属性LocalBinding
获取或设置绑定的本地的IP地址和端口号信息,如果端口设置为0,代表任何可用的端口
Get or set the bound local IP address and port number information, if the port is set to 0, it means any available port
(继承自 NetworkDoubleBase。)
公共属性代码示例LogNet
组件的日志工具,支持日志记录,只要实例化后,当前网络的基本信息,就以DEBUG等级进行输出
The component's logging tool supports logging. As long as the instantiation of the basic network information, the output will be output at DEBUG
(继承自 NetworkBase。)
公共属性代码示例Port
获取或设置服务器的端口号,具体的值需要取决于对方的配置
Gets or sets the port number of the server. The specific value depends on the configuration of the other party.
(继承自 NetworkDoubleBase。)
公共属性代码示例ReceiveTimeOut
获取或设置接收服务器反馈的时间,如果为负数,则不接收反馈
Gets or sets the time to receive server feedback, and if it is a negative number, does not receive feedback
(继承自 NetworkDoubleBase。)
公共属性SendBeforeHex
获取或设置在发送通信报文前追加发送的字节信息,HEX格式,通常用于lora组网时,需要携带 00 00 00 02 四个字节的站地址功能。
Obtain or set the byte information sent before sending communication packets, HEX format, usually used for LORA networking, you need to carry 00 00 00 02 four-byte station address function.
(继承自 NetworkDoubleBase。)
公共属性SleepTime
获取或设置在正式接收对方返回数据前的时候,需要休息的时间,当设置为0的时候,不需要休息。
Get or set the time required to rest before officially receiving the data from the other party. When it is set to 0, no rest is required.
(继承自 NetworkDoubleBase。)
公共属性SocketKeepAliveTime
获取或设置客户端的Socket的心跳时间信息,这个是Socket底层自动实现的心跳包,不基于协议层实现。默认小于0,不开启心跳检测,如果需要开启,设置 60_000 比较合适,单位毫秒
Get or set the heartbeat time information of the Socket of the client. This is the heartbeat packet automatically implemented by the bottom layer of the Socket, not based on the protocol layer. The default value is less than 0, and heartbeat detection is not enabled. If you need to enable it, it is more appropriate to set 60_000, in milliseconds.
(继承自 NetworkDoubleBase。)
公共属性代码示例Token
网络类的身份令牌,在hsl协议的模式下会有效,在和设备进行通信的时候是无效的
Network-type identity tokens will be valid in the hsl protocol mode and will not be valid when communicating with the device
(继承自 NetworkBase。)
受保护的属性UseServerActivePush
获取或设置当前的连接是否激活从服务器主动推送的功能
(继承自 NetworkDoubleBase。)
Top
方法
  名称说明
受保护的方法AccountCertificate
认证账号,根据已经设置的用户名和密码,进行发送服务器进行账号认证。
Authentication account, according to the user name and password that have been set, sending server for account authentication.
(继承自 NetworkDoubleBase。)
受保护的方法AccountCertificateAsync
认证账号,根据已经设置的用户名和密码,进行发送服务器进行账号认证。
Authentication account, according to the user name and password that have been set, sending server for account authentication.
(继承自 NetworkDoubleBase。)
公共方法AppendKey
如果 key 已经存在并且是一个字符串, APPEND 命令将 value 追加到 key 原来的值的末尾。 如果 key 不存在, APPEND 就简单地将给定 key 设为 value ,就像执行 SET key value 一样。 返回追加 value 之后, key 中字符串的长度。
公共方法AppendKeyAsync
如果 key 已经存在并且是一个字符串, APPEND 命令将 value 追加到 key 原来的值的末尾。 如果 key 不存在, APPEND 就简单地将给定 key 设为 value ,就像执行 SET key value 一样。 返回追加 value 之后, key 中字符串的长度。
公共方法ChangePassword
修改Redis的密码信息,如果不需要密码,则传入空字符串即可
公共方法ChangePasswordAsync
修改Redis的密码信息,如果不需要密码,则传入空字符串即可
受保护的方法CheckReceiveDataComplete
检查当前从网口接收的数据是否是完整的,如果是完整的,则需要返回 True,表示数据接收立即完成,默认返回 True
Check whether the data currently received from the network port is complete, and if it is complete, you need to return True, indicating that the data reception is completed immediately, and the default value is True
(继承自 NetworkDoubleBase。)
受保护的方法CheckRemoteToken
检查当前的头子节信息的令牌是否是正确的,仅用于某些特殊的协议实现
Check whether the token of the current header subsection information is correct, only for some special protocol implementations
(继承自 NetworkBase。)
公共方法代码示例ConnectClose
手动断开与远程服务器的连接,如果当前是长连接模式,那么就会切换到短连接模式
Manually disconnect from the remote server, if it is currently in long connection mode, it will switch to short connection mode
(继承自 NetworkDoubleBase。)
公共方法代码示例ConnectCloseAsync
手动断开与远程服务器的连接,如果当前是长连接模式,那么就会切换到短连接模式
Manually disconnect from the remote server, if it is currently in long connection mode, it will switch to short connection mode
(继承自 NetworkDoubleBase。)
公共方法代码示例ConnectServer
尝试连接远程的服务器,如果连接成功,就切换短连接模式到长连接模式,后面的每次请求都共享一个通道,使得通讯速度更快速
Try to connect to a remote server. If the connection is successful, switch the short connection mode to the long connection mode. Each subsequent request will share a channel, making the communication speed faster.
(继承自 NetworkDoubleBase。)
公共方法代码示例ConnectServer(AlienSession)
使用指定的套接字创建异形客户端,在异形客户端的模式下,网络通道需要被动创建。
Use the specified socket to create the alien client. In the alien client mode, the network channel needs to be created passively.
(继承自 NetworkDoubleBase。)
公共方法ConnectServer(MqttClient, String, String)
使用一个MQTT中转服务器来连接设备对象,并进行相关的读取操作
(继承自 NetworkDoubleBase。)
公共方法代码示例ConnectServerAsync
尝试连接远程的服务器,如果连接成功,就切换短连接模式到长连接模式,后面的每次请求都共享一个通道,使得通讯速度更快速
Try to connect to a remote server. If the connection is successful, switch the short connection mode to the long connection mode. Each subsequent request will share a channel, making the communication speed faster.
(继承自 NetworkDoubleBase。)
受保护的方法代码示例CreateSocketAndConnect(String, Int32)
创建一个新的socket对象并连接到远程的地址,默认超时时间为10秒钟,需要指定ip地址以及端口号信息
Create a new socket object and connect to the remote address. The default timeout is 10 seconds. You need to specify the IP address and port number.
(继承自 NetworkBase。)
受保护的方法代码示例CreateSocketAndConnect(IPEndPoint, Int32, IPEndPoint)
创建一个新的socket对象并连接到远程的地址,需要指定远程终结点,超时时间(单位是毫秒),如果需要绑定本地的IP或是端口,传入 local对象
To create a new socket object and connect to the remote address, you need to specify the remote endpoint, the timeout period (in milliseconds), if you need to bind the local IP or port, pass in the local object
(继承自 NetworkBase。)
受保护的方法代码示例CreateSocketAndConnect(String, Int32, Int32)
创建一个新的socket对象并连接到远程的地址,需要指定ip地址以及端口号信息,还有超时时间,单位是毫秒
To create a new socket object and connect to a remote address, you need to specify the IP address and port number information, and the timeout period in milliseconds
(继承自 NetworkBase。)
受保护的方法代码示例CreateSocketAndConnectAsync(String, Int32)
创建一个新的socket对象并连接到远程的地址,默认超时时间为10秒钟,需要指定ip地址以及端口号信息
Create a new socket object and connect to the remote address. The default timeout is 10 seconds. You need to specify the IP address and port number.
(继承自 NetworkBase。)
受保护的方法代码示例CreateSocketAndConnectAsync(IPEndPoint, Int32, IPEndPoint)
创建一个新的socket对象并连接到远程的地址,需要指定远程终结点,超时时间(单位是毫秒),如果需要绑定本地的IP或是端口,传入 local对象
To create a new socket object and connect to the remote address, you need to specify the remote endpoint, the timeout period (in milliseconds), if you need to bind the local IP or port, pass in the local object
(继承自 NetworkBase。)
受保护的方法代码示例CreateSocketAndConnectAsync(String, Int32, Int32)
创建一个新的socket对象并连接到远程的地址,需要指定ip地址以及端口号信息,还有超时时间,单位是毫秒
To create a new socket object and connect to a remote address, you need to specify the IP address and port number information, and the timeout period in milliseconds
(继承自 NetworkBase。)
公共方法DBSize
返回当前数据库的 key 的数量。
公共方法DBSizeAsync
返回当前数据库的 key 的数量。
受保护的方法DecideWhetherQAMessage
决定当前的消息是否是应答机制的消息内容,需要在客户端进行重写实现,如果是应答机制,返回 True, 否则返回 False
To determine whether the current message is the message content of the response mechanism, it needs to be rewritten on the client side. If it is the response mechanism, return True, otherwise return False
(继承自 NetworkDoubleBase。)
公共方法DecrementKey(String)
将 key 中储存的数字值减一。如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 DECR 操作。 如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。 本操作的值限制在 64 位(bit)有符号数字表示之内。 返回执行 DECR 命令之后 key 的值。
公共方法DecrementKey(String, Int64)
将 key 所储存的值减去减量 decrement 。如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 DECR 操作。 如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。 本操作的值限制在 64 位(bit)有符号数字表示之内。 返回减去 decrement 之后, key 的值。
公共方法DecrementKeyAsync(String)
将 key 中储存的数字值减一。如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 DECR 操作。 如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。 本操作的值限制在 64 位(bit)有符号数字表示之内。 返回执行 DECR 命令之后 key 的值。
公共方法DecrementKeyAsync(String, Int64)
将 key 所储存的值减去减量 decrement 。如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 DECR 操作。 如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。 本操作的值限制在 64 位(bit)有符号数字表示之内。 返回减去 decrement 之后, key 的值。
受保护的方法DeleteFileByName
删除一个指定的文件,如果文件不存在,直接返回 True,如果文件存在则直接删除,删除成功返回 True,如果发生了异常,返回False
Delete a specified file, if the file does not exist, return True directly, if the file exists, delete it directly, if the deletion is successful, return True, if an exception occurs, return False
(继承自 NetworkBase。)
公共方法DeleteHashKey(String, String)
删除哈希表 key 中的一个或多个指定域,不存在的域将被忽略。
公共方法DeleteHashKey(String, String)
删除哈希表 key 中的一个或多个指定域,不存在的域将被忽略。返回被成功移除的域的数量,不包括被忽略的域。
公共方法DeleteHashKeyAsync(String, String)
删除哈希表 key 中的一个或多个指定域,不存在的域将被忽略。
公共方法DeleteHashKeyAsync(String, String)
删除哈希表 key 中的一个或多个指定域,不存在的域将被忽略。返回被成功移除的域的数量,不包括被忽略的域。
公共方法DeleteKey(String)
删除给定的一个或多个 key 。不存在的 key 会被忽略。
公共方法DeleteKey(String)
删除给定的一个或多个 key 。不存在的 key 会被忽略。
公共方法DeleteKeyAsync(String)
删除给定的一个或多个 key 。不存在的 key 会被忽略。
公共方法DeleteKeyAsync(String)
删除给定的一个或多个 key 。不存在的 key 会被忽略。
公共方法Dispose
释放当前的资源,如果调用了本方法,那么该对象再使用的时候,需要重新实例化。
Release the current resource. If this method is called, the object needs to be instantiated again when it is used again.
(继承自 NetworkDoubleBase。)
受保护的方法Dispose(Boolean)
释放当前的资源,并自动关闭长连接,如果设置了的话
(继承自 NetworkDoubleBase。)
公共方法Equals
Determines whether the specified object is equal to the current object.
(继承自 Object。)
公共方法ExistsHashKey
查看哈希表 key 中,给定域 field 是否存在。如果哈希表含有给定域,返回 1 。 如果哈希表不含有给定域,或 key 不存在,返回 0 。
公共方法ExistsHashKeyAsync
查看哈希表 key 中,给定域 field 是否存在。如果哈希表含有给定域,返回 1 。 如果哈希表不含有给定域,或 key 不存在,返回 0 。
公共方法ExistsKey
检查给定 key 是否存在。若 key 存在,返回 1 ,否则返回 0 。
公共方法ExistsKeyAsync
检查给定 key 是否存在。若 key 存在,返回 1 ,否则返回 0 。
公共方法ExpireKey
为给定 key 设置生存时间,当 key 过期时(生存时间为 0 ),它会被自动删除。设置成功返回 1 。当 key 不存在或者不能为 key 设置生存时间时,返回 0 。
公共方法ExpireKeyAsync
为给定 key 设置生存时间,当 key 过期时(生存时间为 0 ),它会被自动删除。设置成功返回 1 。当 key 不存在或者不能为 key 设置生存时间时,返回 0 。
受保护的方法ExtraAfterReadFromCoreServer
和服务器交互完成的时候调用的方法,可以根据读写结果进行一些额外的操作,具体的操作需要根据实际的需求来重写实现
The method called when the interaction with the server is completed can perform some additional operations based on the read and write results. The specific operations need to be rewritten according to actual needs.
(继承自 NetworkDoubleBase。)
受保护的方法代码示例ExtraOnDisconnect
根据实际的协议选择是否重写本方法,有些协议在断开连接之前,需要发送一些报文来关闭当前的网络通道
Select whether to rewrite this method according to the actual protocol. Some protocols need to send some packets to close the current network channel before disconnecting.
(重写 NetworkDoubleBaseExtraOnDisconnect(Socket).)
受保护的方法代码示例ExtraOnDisconnectAsync
根据实际的协议选择是否重写本方法,有些协议在断开连接之前,需要发送一些报文来关闭当前的网络通道
Select whether to rewrite this method according to the actual protocol. Some protocols need to send some packets to close the current network channel before disconnecting.
(重写 NetworkDoubleBaseExtraOnDisconnectAsync(Socket).)
受保护的方法Finalize
Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(继承自 Object。)
公共方法FlushDB
清空当前的数据库的key信息
公共方法FlushDBAsync
清空当前的数据库的key信息
受保护的方法GetAvailableSocket
获取本次操作的可用的网络通道,如果是短连接,就重新生成一个新的网络通道,如果是长连接,就复用当前的网络通道。
Obtain the available network channels for this operation. If it is a short connection, a new network channel is regenerated. If it is a long connection, the current network channel is reused.
(继承自 NetworkDoubleBase。)
受保护的方法GetAvailableSocketAsync
获取本次操作的可用的网络通道,如果是短连接,就重新生成一个新的网络通道,如果是长连接,就复用当前的网络通道。
Obtain the available network channels for this operation. If it is a short connection, a new network channel is regenerated. If it is a long connection, the current network channel is reused.
(继承自 NetworkDoubleBase。)
公共方法GetHashCode
Serves as the default hash function.
(继承自 Object。)
公共方法GetListLength
返回列表 key 的长度。如果 key 不存在,则 key 被解释为一个空列表,返回 0 .如果 key 不是列表类型,返回一个错误。
公共方法GetListLengthAsync
返回列表 key 的长度。如果 key 不存在,则 key 被解释为一个空列表,返回 0 .如果 key 不是列表类型,返回一个错误。
受保护的方法GetNewNetMessage
获取一个新的消息对象的方法,需要在继承类里面进行重写
The method to get a new message object needs to be overridden in the inheritance class
(继承自 NetworkDoubleBase。)
公共方法GetPipeSocket
获取当前用于通信的管道信息
Get the current pipe information used for communication
(继承自 NetworkDoubleBase。)
公共方法GetType
Gets the Type of the current instance.
(继承自 Object。)
公共方法IncrementHashKey(String, String, Int64)
为哈希表 key 中的域 field 的值加上增量 increment 。增量也可以为负数,相当于对给定域进行减法操作。 如果 key 不存在,一个新的哈希表被创建并执行 HINCRBY 命令。返回执行 HINCRBY 命令之后,哈希表 key 中域 field 的值。
公共方法IncrementHashKey(String, String, Single)
为哈希表 key 中的域 field 的值加上增量 increment 。增量也可以为负数,相当于对给定域进行减法操作。 如果 key 不存在,一个新的哈希表被创建并执行 HINCRBY 命令。返回执行 HINCRBY 命令之后,哈希表 key 中域 field 的值。
公共方法IncrementHashKeyAsync(String, String, Int64)
为哈希表 key 中的域 field 的值加上增量 increment 。增量也可以为负数,相当于对给定域进行减法操作。 如果 key 不存在,一个新的哈希表被创建并执行 HINCRBY 命令。返回执行 HINCRBY 命令之后,哈希表 key 中域 field 的值。
公共方法IncrementHashKeyAsync(String, String, Single)
为哈希表 key 中的域 field 的值加上增量 increment 。增量也可以为负数,相当于对给定域进行减法操作。 如果 key 不存在,一个新的哈希表被创建并执行 HINCRBY 命令。返回执行 HINCRBY 命令之后,哈希表 key 中域 field 的值。
公共方法IncrementKey(String)
将 key 中储存的数字值增一。如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作。 如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。 返回执行 INCR 命令之后 key 的值。
公共方法IncrementKey(String, Int64)
将 key 所储存的值加上增量 increment 。如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作。 如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。
公共方法IncrementKey(String, Single)
将 key 所储存的值加上增量 increment 。如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCRBYFLOAT 操作。 如果命令执行成功,那么 key 的值会被更新为(执行加法之后的)新值,并且新值会以字符串的形式返回给调用者
公共方法IncrementKeyAsync(String)
将 key 中储存的数字值增一。如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作。 如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。 返回执行 INCR 命令之后 key 的值。
公共方法IncrementKeyAsync(String, Int64)
将 key 所储存的值加上增量 increment 。如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作。 如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。
公共方法IncrementKeyAsync(String, Single)
将 key 所储存的值加上增量 increment 。如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCRBYFLOAT 操作。 如果命令执行成功,那么 key 的值会被更新为(执行加法之后的)新值,并且新值会以字符串的形式返回给调用者
受保护的方法代码示例InitializationOnConnect
根据实际的协议选择是否重写本方法,有些协议在创建连接之后,需要进行一些初始化的信号握手,才能最终建立网络通道。
Whether to rewrite this method is based on the actual protocol. Some protocols require some initial signal handshake to establish a network channel after the connection is created.
(重写 NetworkDoubleBaseInitializationOnConnect(Socket).)
受保护的方法代码示例InitializationOnConnectAsync
根据实际的协议选择是否重写本方法,有些协议在创建连接之后,需要进行一些初始化的信号握手,才能最终建立网络通道。
Whether to rewrite this method is based on the actual protocol. Some protocols require some initial signal handshake to establish a network channel after the connection is created.
(重写 NetworkDoubleBaseInitializationOnConnectAsync(Socket).)
公共方法IpAddressPing
对当前设备的IP地址进行PING的操作,返回PING的结果,正常来说,返回Success
PING the IP address of the current device and return the PING result. Normally, it returns Success
(继承自 NetworkDoubleBase。)
公共方法ListInsertAfter
将值 value 插入到列表 key 当中,位于值 pivot 之后。 当 pivot 不存在于列表 key 时,不执行任何操作。 当 key 不存在时, key 被视为空列表,不执行任何操作。 如果 key 不是列表类型,返回一个错误。
公共方法ListInsertAfterAsync
将值 value 插入到列表 key 当中,位于值 pivot 之后。 当 pivot 不存在于列表 key 时,不执行任何操作。 当 key 不存在时, key 被视为空列表,不执行任何操作。 如果 key 不是列表类型,返回一个错误。
公共方法ListInsertBefore
将值 value 插入到列表 key 当中,位于值 pivot 之前。 当 pivot 不存在于列表 key 时,不执行任何操作。 当 key 不存在时, key 被视为空列表,不执行任何操作。 如果 key 不是列表类型,返回一个错误。
公共方法ListInsertBeforeAsync
将值 value 插入到列表 key 当中,位于值 pivot 之前。 当 pivot 不存在于列表 key 时,不执行任何操作。 当 key 不存在时, key 被视为空列表,不执行任何操作。 如果 key 不是列表类型,返回一个错误。
公共方法ListLeftPop
移除并返回列表 key 的头元素。列表的头元素。当 key 不存在时,返回 nil 。
公共方法ListLeftPopAsync
移除并返回列表 key 的头元素。列表的头元素。当 key 不存在时,返回 nil 。
公共方法ListLeftPush(String, String)
将一个或多个值 value 插入到列表 key 的表头,如果 key 不存在,一个空列表会被创建并执行 LPUSH 操作。当 key 存在但不是列表类型时,返回一个错误。返回执行 LPUSH 命令后,列表的长度。
公共方法ListLeftPush(String, String)
将一个或多个值 value 插入到列表 key 的表头,如果 key 不存在,一个空列表会被创建并执行 LPUSH 操作。当 key 存在但不是列表类型时,返回一个错误。返回执行 LPUSH 命令后,列表的长度。
公共方法ListLeftPushAsync(String, String)
将一个或多个值 value 插入到列表 key 的表头,如果 key 不存在,一个空列表会被创建并执行 LPUSH 操作。当 key 存在但不是列表类型时,返回一个错误。返回执行 LPUSH 命令后,列表的长度。
公共方法ListLeftPushAsync(String, String)
将一个或多个值 value 插入到列表 key 的表头,如果 key 不存在,一个空列表会被创建并执行 LPUSH 操作。当 key 存在但不是列表类型时,返回一个错误。返回执行 LPUSH 命令后,列表的长度。
公共方法ListLeftPushX
将值 value 插入到列表 key 的表头,当且仅当 key 存在并且是一个列表。和 LPUSH 命令相反,当 key 不存在时, LPUSHX 命令什么也不做。 返回LPUSHX 命令执行之后,表的长度。
公共方法ListLeftPushXAsync
将值 value 插入到列表 key 的表头,当且仅当 key 存在并且是一个列表。和 LPUSH 命令相反,当 key 不存在时, LPUSHX 命令什么也不做。 返回LPUSHX 命令执行之后,表的长度。
公共方法ListRange
返回列表 key 中指定区间内的元素,区间以偏移量 start 和 stop 指定。 下标(index)参数 start 和 stop 都以 0 为底,也就是说,以 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。 返回一个列表,包含指定区间内的元素。
公共方法ListRangeAsync
返回列表 key 中指定区间内的元素,区间以偏移量 start 和 stop 指定。 下标(index)参数 start 和 stop 都以 0 为底,也就是说,以 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。 返回一个列表,包含指定区间内的元素。
公共方法ListRemoveElementMatch
根据参数 count 的值,移除列表中与参数 value 相等的元素。count 的值可以是以下几种: count > 0 : 从表头开始向表尾搜索,移除与 value 相等的元素,数量为 count 。 count < 0 : 从表尾开始向表头搜索,移除与 value 相等的元素,数量为 count 的绝对值。 count = 0 : 移除表中所有与 value 相等的值。 返回被移除的数量。
公共方法ListRemoveElementMatchAsync
根据参数 count 的值,移除列表中与参数 value 相等的元素。count 的值可以是以下几种: count > 0 : 从表头开始向表尾搜索,移除与 value 相等的元素,数量为 count 。 count < 0 : 从表尾开始向表头搜索,移除与 value 相等的元素,数量为 count 的绝对值。 count = 0 : 移除表中所有与 value 相等的值。 返回被移除的数量。
公共方法ListRightPop
移除并返回列表 key 的尾元素。当 key 不存在时,返回 nil 。
公共方法ListRightPopAsync
移除并返回列表 key 的尾元素。当 key 不存在时,返回 nil 。
公共方法ListRightPopLeftPush
命令 RPOPLPUSH 在一个原子时间内,执行以下两个动作:
1. 将列表 source 中的最后一个元素( 尾元素)弹出,并返回给客户端。
2. 将 source 弹出的元素插入到列表 destination ,作为 destination 列表的的头元素。

举个例子,你有两个列表 source 和 destination , source 列表有元素 a, b, c , destination 列表有元素 x, y, z ,执行 RPOPLPUSH source destination 之后, source 列表包含元素 a, b , destination 列表包含元素 c, x, y, z ,并且元素 c 会被返回给客户端。 如果 source 不存在,值 nil 被返回,并且不执行其他动作。 如果 source 和 destination 相同,则列表中的表尾元素被移动到表头,并返回该元素,可以把这种特殊情况视作列表的旋转( rotation)操作。
公共方法ListRightPopLeftPushAsync
命令 RPOPLPUSH 在一个原子时间内,执行以下两个动作:
1. 将列表 source 中的最后一个元素( 尾元素)弹出,并返回给客户端。
2. 将 source 弹出的元素插入到列表 destination ,作为 destination 列表的的头元素。

举个例子,你有两个列表 source 和 destination , source 列表有元素 a, b, c , destination 列表有元素 x, y, z ,执行 RPOPLPUSH source destination 之后, source 列表包含元素 a, b , destination 列表包含元素 c, x, y, z ,并且元素 c 会被返回给客户端。 如果 source 不存在,值 nil 被返回,并且不执行其他动作。 如果 source 和 destination 相同,则列表中的表尾元素被移动到表头,并返回该元素,可以把这种特殊情况视作列表的旋转( rotation)操作。
公共方法ListRightPush(String, String)
将一个或多个值 value 插入到列表 key 的表尾(最右边)。 如果 key 不存在,一个空列表会被创建并执行 RPUSH 操作。当 key 存在但不是列表类型时,返回一个错误。
公共方法ListRightPush(String, String)
将一个或多个值 value 插入到列表 key 的表尾(最右边)。 如果有多个 value 值,那么各个 value 值按从左到右的顺序依次插入到表尾:比如对一个空列表 mylist 执行 RPUSH mylist a b c ,得出的结果列表为 a b c , 如果 key 不存在,一个空列表会被创建并执行 RPUSH 操作。当 key 存在但不是列表类型时,返回一个错误。 返回执行 RPUSH 操作后,表的长度。
公共方法ListRightPushAsync(String, String)
将一个或多个值 value 插入到列表 key 的表尾(最右边)。 如果 key 不存在,一个空列表会被创建并执行 RPUSH 操作。当 key 存在但不是列表类型时,返回一个错误。
公共方法ListRightPushAsync(String, String)
将一个或多个值 value 插入到列表 key 的表尾(最右边)。 如果有多个 value 值,那么各个 value 值按从左到右的顺序依次插入到表尾:比如对一个空列表 mylist 执行 RPUSH mylist a b c ,得出的结果列表为 a b c , 如果 key 不存在,一个空列表会被创建并执行 RPUSH 操作。当 key 存在但不是列表类型时,返回一个错误。 返回执行 RPUSH 操作后,表的长度。
公共方法ListRightPushX
将值 value 插入到列表 key 的表尾,当且仅当 key 存在并且是一个列表。 和 RPUSH 命令相反,当 key 不存在时, RPUSHX 命令什么也不做。
公共方法ListRightPushXAsync
将值 value 插入到列表 key 的表尾,当且仅当 key 存在并且是一个列表。 和 RPUSH 命令相反,当 key 不存在时, RPUSHX 命令什么也不做。
公共方法ListSet
设置数组的某一个索引的数据信息,当 index 参数超出范围,或对一个空列表( key 不存在)进行 LSET 时,返回一个错误。
公共方法ListSetAsync
设置数组的某一个索引的数据信息,当 index 参数超出范围,或对一个空列表( key 不存在)进行 LSET 时,返回一个错误。
公共方法ListTrim
对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。 举个例子,执行命令 LTRIM list 0 2 ,表示只保留列表 list 的前三个元素,其余元素全部删除。 下标( index)参数 start 和 stop 都以 0 为底,也就是说,以 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。 当 key 不是列表类型时,返回一个错误。
公共方法ListTrimAsync
对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。 举个例子,执行命令 LTRIM list 0 2 ,表示只保留列表 list 的前三个元素,其余元素全部删除。 下标( index)参数 start 和 stop 都以 0 为底,也就是说,以 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。 当 key 不是列表类型时,返回一个错误。
受保护的方法MemberwiseClone
Creates a shallow copy of the current Object.
(继承自 Object。)
公共方法MoveKey
将当前数据库的 key 移动到给定的数据库 db 当中。 如果当前数据库(源数据库)和给定数据库(目标数据库)有相同名字的给定 key ,或者 key 不存在于当前数据库,那么 MOVE 没有任何效果。 因此,也可以利用这一特性,将 MOVE 当作锁(locking)原语(primitive)。
公共方法MoveKeyAsync
将当前数据库的 key 移动到给定的数据库 db 当中。 如果当前数据库(源数据库)和给定数据库(目标数据库)有相同名字的给定 key ,或者 key 不存在于当前数据库,那么 MOVE 没有任何效果。 因此,也可以利用这一特性,将 MOVE 当作锁(locking)原语(primitive)。
公共方法OperateLongNumberFromServer
向服务器请求指令,并返回long数字的结果对象
公共方法OperateLongNumberFromServerAsync
向服务器请求指令,并返回long数字的结果对象
公共方法OperateNumberFromServer
向服务器请求指定,并返回数字的结果对象
公共方法OperateNumberFromServerAsync
向服务器请求指定,并返回数字的结果对象
公共方法OperateStatusFromServer
向服务器请求指令,并返回状态的结果对象,通常用于写入的判断,或是请求类型的判断
公共方法OperateStatusFromServerAsync
向服务器请求指令,并返回状态的结果对象,通常用于写入的判断,或是请求类型的判断
公共方法OperateStringFromServer
向服务器请求指令,并返回字符串的结果对象
公共方法OperateStringFromServerAsync
向服务器请求指令,并返回字符串的结果对象
公共方法OperateStringsFromServer
向服务器请求指令,并返回字符串数组的结果对象
公共方法OperateStringsFromServerAsync
向服务器请求指令,并返回字符串数组的结果对象
公共方法PackCommandWithHeader
对当前的命令进行打包处理,通常是携带命令头内容,标记当前的命令的长度信息,需要进行重写,否则默认不打包
The current command is packaged, usually carrying the content of the command header, marking the length of the current command, and it needs to be rewritten, otherwise it is not packaged by default
(继承自 NetworkDoubleBase。)
公共方法PersistKey
移除给定 key 的生存时间,将这个 key 从『易失的』(带生存时间 key )转换成『持久的』(一个不带生存时间、永不过期的 key )。 当生存时间移除成功时,返回 1 . 如果 key 不存在或 key 没有设置生存时间,返回 0 。
公共方法PersistKeyAsync
移除给定 key 的生存时间,将这个 key 从『易失的』(带生存时间 key )转换成『持久的』(一个不带生存时间、永不过期的 key )。 当生存时间移除成功时,返回 1 . 如果 key 不存在或 key 没有设置生存时间,返回 0 。
公共方法Ping
向服务器进行PING的操作,服务器会返回PONG操作
公共方法PingAsync
向服务器进行PING的操作,服务器会返回PONG操作
公共方法Publish
将信息 message 发送到指定的频道 channel,返回接收到信息 message 的订阅者数量。
公共方法PublishAsync
将信息 message 发送到指定的频道 channel,返回接收到信息 message 的订阅者数量。
公共方法代码示例ReadT
从设备里读取支持Hsl特性的数据内容, 该特性为HslRedisKeyAttributeHslRedisListItemAttributeHslRedisListAttributeHslRedisHashFieldAttribute 详细参考代码示例的操作说明。
公共方法ReadAllKeys
查找所有符合给定模式 pattern 的 key 。 * 匹配数据库中所有 key。 h?llo 匹配 hello , hallo 和 hxllo 等。 h[ae]llo 匹配 hello 和 hallo ,但不匹配 hillo 。
公共方法ReadAllKeysAsync
查找所有符合给定模式 pattern 的 key 。 * 匹配数据库中所有 key。 h?llo 匹配 hello , hallo 和 hxllo 等。 h[ae]llo 匹配 hello 和 hallo ,但不匹配 hillo 。
公共方法ReadAndWriteKey
将给定 key 的值设为 value ,并返回 key 的旧值(old value)。当 key 存在但不是字符串类型时,返回一个错误。
公共方法ReadAndWriteKeyAsync
将给定 key 的值设为 value ,并返回 key 的旧值(old value)。当 key 存在但不是字符串类型时,返回一个错误。
公共方法代码示例ReadAsyncT
从设备里读取支持Hsl特性的数据内容, 该特性为HslRedisKeyAttributeHslRedisListItemAttributeHslRedisListAttributeHslRedisHashFieldAttribute 详细参考代码示例的操作说明。
公共方法ReadCustomer
自定义的指令交互方法,该指令用空格分割,举例:LTRIM AAAAA 0 999 就是收缩列表,GET AAA 就是获取键值,需要对返回的数据进行二次分析
公共方法ReadCustomerAsync
自定义的指令交互方法,该指令用空格分割,举例:LTRIM AAAAA 0 999 就是收缩列表,GET AAA 就是获取键值,需要对返回的数据进行二次分析
公共方法代码示例ReadFromCoreServer(Byte)
将数据发送到当前的网络通道中,并从网络通道中接收一个INetMessage指定的完整的报文,网络通道将根据GetAvailableSocket方法自动获取,本方法是线程安全的。
Send data to the current network channel and receive a complete message specified by INetMessage from the network channel. The network channel will be automatically obtained according to the GetAvailableSocket method This method is thread-safe.
(继承自 NetworkDoubleBase。)
公共方法ReadFromCoreServer(IEnumerableByte) (继承自 NetworkDoubleBase。)
公共方法代码示例ReadFromCoreServer(Byte, Boolean, Boolean)
将数据发送到当前的网络通道中,并从网络通道中接收一个INetMessage指定的完整的报文,网络通道将根据GetAvailableSocket方法自动获取,本方法是线程安全的。
Send data to the current network channel and receive a complete message specified by INetMessage from the network channel. The network channel will be automatically obtained according to the GetAvailableSocket method This method is thread-safe.
(继承自 NetworkDoubleBase。)
公共方法代码示例ReadFromCoreServer(Socket, Byte, Boolean, Boolean)
将数据报文发送指定的网络通道上,根据当前指定的INetMessage类型,返回一条完整的数据指令
Sends a data message to the specified network channel, and returns a complete data command according to the currently specified INetMessage type
(重写 NetworkDoubleBaseReadFromCoreServer(Socket, Byte, Boolean, Boolean).)
公共方法代码示例ReadFromCoreServerAsync(Byte)
将数据发送到当前的网络通道中,并从网络通道中接收一个INetMessage指定的完整的报文,网络通道将根据GetAvailableSocket方法自动获取,本方法是线程安全的。
Send data to the current network channel and receive a complete message specified by INetMessage from the network channel. The network channel will be automatically obtained according to the GetAvailableSocket method This method is thread-safe.
(继承自 NetworkDoubleBase。)
公共方法ReadFromCoreServerAsync(IEnumerableByte) (继承自 NetworkDoubleBase。)
公共方法代码示例ReadFromCoreServerAsync(Byte, Boolean, Boolean)
将数据发送到当前的网络通道中,并从网络通道中接收一个INetMessage指定的完整的报文,网络通道将根据GetAvailableSocket方法自动获取,本方法是线程安全的。
Send data to the current network channel and receive a complete message specified by INetMessage from the network channel. The network channel will be automatically obtained according to the GetAvailableSocket method This method is thread-safe.
(继承自 NetworkDoubleBase。)
公共方法代码示例ReadFromCoreServerAsync(Socket, Byte, Boolean, Boolean)
将数据报文发送指定的网络通道上,根据当前指定的INetMessage类型,返回一条完整的数据指令
Sends a data message to the specified network channel, and returns a complete data command according to the currently specified INetMessage type
(重写 NetworkDoubleBaseReadFromCoreServerAsync(Socket, Byte, Boolean, Boolean).)
公共方法ReadHashKey(String, String)
返回哈希表 key 中给定域 field 的值。当给定域不存在或是给定 key 不存在时,返回 nil
公共方法ReadHashKey(String, String)
返回哈希表 key 中,一个或多个给定域的值。如果给定的域不存在于哈希表,那么返回一个 nil 值。 因为不存在的 key 被当作一个空哈希表来处理,所以对一个不存在的 key 进行 HMGET 操作将返回一个只带有 nil 值的表。
公共方法ReadHashKeyAll
返回哈希表 key 中,所有的域和值。在返回值里,紧跟每个域名(field name)之后是域的值(value),所以返回值的长度是哈希表大小的两倍。
公共方法ReadHashKeyAllAsync
返回哈希表 key 中,所有的域和值。在返回值里,紧跟每个域名(field name)之后是域的值(value),所以返回值的长度是哈希表大小的两倍。
公共方法ReadHashKeyAsync(String, String)
返回哈希表 key 中给定域 field 的值。当给定域不存在或是给定 key 不存在时,返回 nil
公共方法ReadHashKeyAsync(String, String)
返回哈希表 key 中,一个或多个给定域的值。如果给定的域不存在于哈希表,那么返回一个 nil 值。 因为不存在的 key 被当作一个空哈希表来处理,所以对一个不存在的 key 进行 HMGET 操作将返回一个只带有 nil 值的表。
公共方法ReadHashKeyLength
返回哈希表 key 中域的数量。
公共方法ReadHashKeyLengthAsync
返回哈希表 key 中域的数量。
公共方法ReadHashKeys
返回哈希表 key 中的所有域。当 key 不存在时,返回一个空表。
公共方法ReadHashKeysAsync
返回哈希表 key 中的所有域。当 key 不存在时,返回一个空表。
公共方法ReadHashValues
返回哈希表 key 中所有域的值。当 key 不存在时,返回一个空表。
公共方法ReadHashValuesAsync
返回哈希表 key 中所有域的值。当 key 不存在时,返回一个空表。
公共方法ReadKey(String)
返回 key 所关联的字符串值。如果 key 不存在那么返回特殊值 nil 。 假如 key 储存的值不是字符串类型,返回一个错误,因为 GET 只能用于处理字符串值。
公共方法ReadKey(String)
返回所有(一个或多个)给定 key 的值。 如果给定的 key 里面,有某个 key 不存在,那么这个 key 返回特殊值 null 。因此,该命令永不失败。
公共方法ReadKeyAsync(String)
返回 key 所关联的字符串值。如果 key 不存在那么返回特殊值 nil 。 假如 key 储存的值不是字符串类型,返回一个错误,因为 GET 只能用于处理字符串值。
公共方法ReadKeyAsync(String)
返回所有(一个或多个)给定 key 的值。 如果给定的 key 里面,有某个 key 不存在,那么这个 key 返回特殊值 null 。因此,该命令永不失败。
公共方法ReadKeyLength
返回 key 所储存的字符串值的长度。当 key 储存的不是字符串值时,返回一个错误。返回符串值的长度。当 key 不存在时,返回 0 。
公共方法ReadKeyLengthAsync
返回 key 所储存的字符串值的长度。当 key 储存的不是字符串值时,返回一个错误。返回符串值的长度。当 key 不存在时,返回 0 。
公共方法ReadKeyRange
返回 key 中字符串值的子字符串,字符串的截取范围由 start 和 end 两个偏移量决定(包括 start 和 end 在内)。 负数偏移量表示从字符串最后开始计数, -1 表示最后一个字符, -2 表示倒数第二个,以此类推。 返回截取得出的子字符串。
公共方法ReadKeyRangeAsync
返回 key 中字符串值的子字符串,字符串的截取范围由 start 和 end 两个偏移量决定(包括 start 和 end 在内)。 负数偏移量表示从字符串最后开始计数, -1 表示最后一个字符, -2 表示倒数第二个,以此类推。 返回截取得出的子字符串。
公共方法ReadKeyTTL
以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live)。
公共方法ReadKeyTTLAsync
以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live)。
公共方法ReadKeyType
返回 key 所储存的值的类型。none (key不存在),string (字符串),list (列表),set (集合),zset (有序集),hash (哈希表)
公共方法ReadKeyTypeAsync
返回 key 所储存的值的类型。none (key不存在),string (字符串),list (列表),set (集合),zset (有序集),hash (哈希表)
公共方法ReadListByIndex
返回列表 key 中,下标为 index 的元素。下标(index)参数 start 和 stop 都以 0 为底,也就是说,以 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。如果 key 不是列表类型,返回一个错误。
公共方法ReadListByIndexAsync
返回列表 key 中,下标为 index 的元素。下标(index)参数 start 和 stop 都以 0 为底,也就是说,以 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。如果 key 不是列表类型,返回一个错误。
公共方法ReadRandomKey
从当前数据库中随机返回(不删除)一个 key 。 当数据库不为空时,返回一个 key 。 当数据库为空时,返回 nil 。
公共方法ReadRandomKeyAsync
从当前数据库中随机返回(不删除)一个 key 。 当数据库不为空时,返回一个 key 。 当数据库为空时,返回 nil 。
公共方法ReadServerTime
获取服务器的时间戳信息,可用于本地时间的数据同步问题
公共方法ReadServerTimeAsync
获取服务器的时间戳信息,可用于本地时间的数据同步问题
受保护的方法Receive(SslStream, Int32, Int32, ActionInt64, Int64)
接收固定长度的字节数组,允许指定超时时间,默认为60秒,当length大于0时,接收固定长度的数据内容,当length小于0时,接收不大于2048长度的随机数据信息
Receiving a fixed-length byte array, allowing a specified timeout time. The default is 60 seconds. When length is greater than 0, fixed-length data content is received. When length is less than 0, random data information of a length not greater than 2048 is received.
(继承自 NetworkBase。)
受保护的方法Receive(Socket, Int32, Int32, ActionInt64, Int64)
接收固定长度的字节数组,允许指定超时时间,默认为60秒,当length大于0时,接收固定长度的数据内容,当length小于0时,接收不大于2048长度的随机数据信息
Receiving a fixed-length byte array, allowing a specified timeout time. The default is 60 seconds. When length is greater than 0, fixed-length data content is received. When length is less than 0, random data information of a length not greater than 2048 is received.
(继承自 NetworkBase。)
受保护的方法Receive(SslStream, Byte, Int32, Int32, Int32, ActionInt64, Int64)
接收固定长度的字节数组,允许指定超时时间,默认为60秒,当length大于0时,接收固定长度的数据内容,当length小于0时,buffer长度的缓存数据
Receiving a fixed-length byte array, allowing a specified timeout time. The default is 60 seconds. When length is greater than 0, fixed-length data content is received. When length is less than 0, random data information of a length not greater than 2048 is received.
(继承自 NetworkBase。)
受保护的方法Receive(Socket, Byte, Int32, Int32, Int32, ActionInt64, Int64)
接收固定长度的字节数组,允许指定超时时间,默认为60秒,当length大于0时,接收固定长度的数据内容,当length小于0时,buffer长度的缓存数据
Receiving a fixed-length byte array, allowing a specified timeout time. The default is 60 seconds. When length is greater than 0, fixed-length data content is received. When length is less than 0, random data information of a length not greater than 2048 is received.
(继承自 NetworkBase。)
受保护的方法ReceiveAndCheckBytes
[自校验] 接收一条完整的同步数据,包含头子节和内容字节,基础的数据,如果结果异常,则结束通讯
[Self-checking] Receive a complete synchronization data, including header subsection and content bytes, basic data, if the result is abnormal, the communication ends
(继承自 NetworkBase。)
受保护的方法ReceiveAndCheckBytesAsync
[自校验] 接收一条完整的同步数据,包含头子节和内容字节,基础的数据,如果结果异常,则结束通讯
[Self-checking] Receive a complete synchronization data, including header subsection and content bytes, basic data, if the result is abnormal, the communication ends
(继承自 NetworkBase。)
受保护的方法ReceiveAsync(SslStream, Int32, Int32, ActionInt64, Int64)
接收固定长度的字节数组,允许指定超时时间,默认为60秒,当length大于0时,接收固定长度的数据内容,当length小于0时,接收不大于2048长度的随机数据信息
Receiving a fixed-length byte array, allowing a specified timeout time. The default is 60 seconds. When length is greater than 0, fixed-length data content is received. When length is less than 0, random data information of a length not greater than 2048 is received.
(继承自 NetworkBase。)
受保护的方法ReceiveAsync(Socket, Int32, Int32, ActionInt64, Int64)
接收固定长度的字节数组,允许指定超时时间,默认为60秒,当length大于0时,接收固定长度的数据内容,当length小于0时,接收不大于2048长度的随机数据信息
Receiving a fixed-length byte array, allowing a specified timeout time. The default is 60 seconds. When length is greater than 0, fixed-length data content is received. When length is less than 0, random data information of a length not greater than 2048 is received.
(继承自 NetworkBase。)
受保护的方法ReceiveAsync(SslStream, Byte, Int32, Int32, Int32, ActionInt64, Int64)
接收固定长度的字节数组,允许指定超时时间,默认为60秒,当length大于0时,接收固定长度的数据内容,当length小于0时,buffer长度的缓存数据
Receiving a fixed-length byte array, allowing a specified timeout time. The default is 60 seconds. When length is greater than 0, fixed-length data content is received. When length is less than 0, random data information of a length not greater than 2048 is received.
(继承自 NetworkBase。)
受保护的方法ReceiveAsync(Socket, Byte, Int32, Int32, Int32, ActionInt64, Int64)
接收固定长度的字节数组,允许指定超时时间,默认为60秒,当length大于0时,接收固定长度的数据内容,当length小于0时,buffer长度的缓存数据
Receiving a fixed-length byte array, allowing a specified timeout time. The default is 60 seconds. When length is greater than 0, fixed-length data content is received. When length is less than 0, random data information of a length not greater than 2048 is received.
(继承自 NetworkBase。)
受保护的方法ReceiveByMessage
接收一条完整的 数据内容,需要指定超时时间,单位为毫秒。
Receive a complete data content, Need to specify a timeout period in milliseconds
(继承自 NetworkBase。)
受保护的方法ReceiveByMessageAsync
接收一条完整的 数据内容,需要指定超时时间,单位为毫秒。
Receive a complete data content, Need to specify a timeout period in milliseconds
(继承自 NetworkBase。)
受保护的方法ReceiveBytesContentFromSocket
[自校验] 从网络中接收一串字节数据,如果结果异常,则结束通讯
[Self-checking] Receive a string of byte data from the network. If the result is abnormal, the communication ends.
(继承自 NetworkBase。)
受保护的方法ReceiveBytesContentFromSocketAsync
[自校验] 从网络中接收一串字节数据,如果结果异常,则结束通讯
[Self-checking] Receive a string of byte data from the network. If the result is abnormal, the communication ends.
(继承自 NetworkBase。)
受保护的方法ReceiveCommandLineFromSocket(Socket, Byte, Int32)
接收一行命令数据,需要自己指定这个结束符,默认超时时间为60秒,也即是60000,单位是毫秒
To receive a line of command data, you need to specify the terminator yourself. The default timeout is 60 seconds, which is 60,000, in milliseconds.
(继承自 NetworkBase。)
受保护的方法ReceiveCommandLineFromSocket(Socket, Byte, Byte, Int32)
接收一行命令数据,需要自己指定这个结束符,默认超时时间为60秒,也即是60000,单位是毫秒
To receive a line of command data, you need to specify the terminator yourself. The default timeout is 60 seconds, which is 60,000, in milliseconds.
(继承自 NetworkBase。)
受保护的方法ReceiveCommandLineFromSocketAsync(Socket, Byte, Int32)
接收一行命令数据,需要自己指定这个结束符,默认超时时间为60秒,也即是60000,单位是毫秒
To receive a line of command data, you need to specify the terminator yourself. The default timeout is 60 seconds, which is 60,000, in milliseconds.
(继承自 NetworkBase。)
受保护的方法ReceiveCommandLineFromSocketAsync(Socket, Byte, Byte, Int32)
接收一行命令数据,需要自己指定这个结束符,默认超时时间为60秒,也即是60000,单位是毫秒
To receive a line of command data, you need to specify the terminator yourself. The default timeout is 60 seconds, which is 60,000, in milliseconds.
(继承自 NetworkBase。)
受保护的方法ReceiveHslMessage
接收一条hsl协议的数据信息,自动解析,解压,解码操作,获取最后的实际的数据,接收结果依次为暗号,用户码,负载数据
Receive a piece of hsl protocol data information, automatically parse, decompress, and decode operations to obtain the last actual data. The result is a opCode, user code, and payload data in order.
(继承自 NetworkBase。)
受保护的方法ReceiveHslMessageAsync
接收一条hsl协议的数据信息,自动解析,解压,解码操作,获取最后的实际的数据,接收结果依次为暗号,用户码,负载数据
Receive a piece of hsl protocol data information, automatically parse, decompress, and decode operations to obtain the last actual data. The result is a opCode, user code, and payload data in order.
(继承自 NetworkBase。)
受保护的方法ReceiveMqttFile
使用MQTT协议从网络接收字节数组,然后写入文件或流中,支持进度报告
Use MQTT protocol to receive byte array from the network, and then write it to file or stream, support progress report
(继承自 NetworkBase。)
受保护的方法ReceiveMqttFileAsync
使用MQTT协议从网络接收字节数组,然后写入文件或流中,支持进度报告
Use MQTT protocol to receive byte array from the network, and then write it to file or stream, support progress report
(继承自 NetworkBase。)
受保护的方法ReceiveMqttMessage(SslStream, Int32, ActionInt64, Int64)
接收一条完整的MQTT协议的报文信息,包含控制码和负载数据
Receive a message of a completed MQTT protocol, including control code and payload data
(继承自 NetworkBase。)
受保护的方法ReceiveMqttMessage(Socket, Int32, ActionInt64, Int64)
接收一条完整的MQTT协议的报文信息,包含控制码和负载数据
Receive a message of a completed MQTT protocol, including control code and payload data
(继承自 NetworkBase。)
受保护的方法ReceiveMqttMessageAsync(SslStream, Int32, ActionInt64, Int64)
接收一条完整的MQTT协议的报文信息,包含控制码和负载数据
Receive a message of a completed MQTT protocol, including control code and payload data
(继承自 NetworkBase。)
受保护的方法ReceiveMqttMessageAsync(Socket, Int32, ActionInt64, Int64)
接收一条完整的MQTT协议的报文信息,包含控制码和负载数据
Receive a message of a completed MQTT protocol, including control code and payload data
(继承自 NetworkBase。)
受保护的方法ReceiveMqttStream
使用MQTT协议从socket接收指定长度的字节数组,然后全部写入到流中,可以指定进度报告
Use the MQTT protocol to receive a byte array of specified length from the socket, and then write all of them to the stream, and you can specify a progress report
(继承自 NetworkBase。)
受保护的方法ReceiveMqttStreamAsync
使用MQTT协议从socket接收指定长度的字节数组,然后全部写入到流中,可以指定进度报告
Use the MQTT protocol to receive a byte array of specified length from the socket, and then write all of them to the stream, and you can specify a progress report
(继承自 NetworkBase。)
受保护的方法ReceiveRedisCommand
从网络接收一条完整的redis报文的消息
Receive a complete redis message from the network
(继承自 NetworkBase。)
受保护的方法ReceiveRedisCommandAsync
从网络接收一条完整的redis报文的消息
Receive a complete redis message from the network
(继承自 NetworkBase。)
受保护的方法ReceiveRedisCommandString
接收一行基于redis协议的字符串的信息,需要指定固定的长度
Receive a line of information based on the redis protocol string, you need to specify a fixed length
(继承自 NetworkBase。)
受保护的方法ReceiveRedisCommandStringAsync
接收一行基于redis协议的字符串的信息,需要指定固定的长度
Receive a line of information based on the redis protocol string, you need to specify a fixed length
(继承自 NetworkBase。)
受保护的方法ReceiveStringArrayContentFromSocket
[自校验] 从网络中接收一个字符串数组,如果结果异常,则结束通讯
[Self-check] Receive an array of strings from the network. If the result is abnormal, the communication ends.
(继承自 NetworkBase。)
受保护的方法ReceiveStringArrayContentFromSocketAsync
[自校验] 从网络中接收一个字符串数组,如果结果异常,则结束通讯
[Self-check] Receive an array of strings from the network. If the result is abnormal, the communication ends.
(继承自 NetworkBase。)
受保护的方法ReceiveStringContentFromSocket
[自校验] 从网络中接收一个字符串数据,如果结果异常,则结束通讯
[Self-checking] Receive a string of data from the network. If the result is abnormal, the communication ends.
(继承自 NetworkBase。)
受保护的方法ReceiveStringContentFromSocketAsync
[自校验] 从网络中接收一个字符串数据,如果结果异常,则结束通讯
[Self-checking] Receive a string of data from the network. If the result is abnormal, the communication ends.
(继承自 NetworkBase。)
公共方法RenameKey
将 key 改名为 newkey 。 当 key 和 newkey 相同,或者 key 不存在时,返回一个错误。 当 newkey 已经存在时, RENAME 命令将覆盖旧值。
公共方法RenameKeyAsync
将 key 改名为 newkey 。 当 key 和 newkey 相同,或者 key 不存在时,返回一个错误。 当 newkey 已经存在时, RENAME 命令将覆盖旧值。
公共方法Save
SAVE 命令执行一个同步保存操作,将当前 Redis 实例的所有数据快照(snapshot)以 RDB 文件的形式保存到硬盘。
公共方法SaveAsync
在后台异步(Asynchronously)保存当前数据库的数据到磁盘。 BGSAVE 命令执行之后立即返回 OK ,然后 Redis fork 出一个新子进程,原来的 Redis 进程(父进程)继续处理客户端请求,而子进程则负责将数据保存到磁盘,然后退出。
公共方法SelectDB
切换到指定的数据库,数据库索引号 index 用数字值指定,以 0 作为起始索引值。默认使用 0 号数据库。
公共方法SelectDBAsync
切换到指定的数据库,数据库索引号 index 用数字值指定,以 0 作为起始索引值。默认使用 0 号数据库。
受保护的方法Send(SslStream, Byte)
发送消息给套接字,直到完成的时候返回,经过测试,本方法是线程安全的。
Send a message to the socket until it returns when completed. After testing, this method is thread-safe.
(继承自 NetworkBase。)
受保护的方法Send(Socket, Byte)
发送消息给套接字,直到完成的时候返回,经过测试,本方法是线程安全的。
Send a message to the socket until it returns when completed. After testing, this method is thread-safe.
(继承自 NetworkBase。)
受保护的方法Send(SslStream, Byte, Int32, Int32)
发送消息给套接字,直到完成的时候返回,经过测试,本方法是线程安全的。
Send a message to the socket until it returns when completed. After testing, this method is thread-safe.
(继承自 NetworkBase。)
受保护的方法Send(Socket, Byte, Int32, Int32)
发送消息给套接字,直到完成的时候返回,经过测试,本方法是线程安全的。
Send a message to the socket until it returns when completed. After testing, this method is thread-safe.
(继承自 NetworkBase。)
受保护的方法SendAccountAndCheckReceive
[自校验] 直接发送字符串数组并确认对方接收完成数据,如果结果异常,则结束通讯
[Self-check] Send string array directly and confirm that the other party has received the completed data. If the result is abnormal, the communication ends.
(继承自 NetworkBase。)
受保护的方法SendAccountAndCheckReceiveAsync
[自校验] 直接发送字符串数组并确认对方接收完成数据,如果结果异常,则结束通讯
[Self-check] Send string array directly and confirm that the other party has received the completed data. If the result is abnormal, the communication ends.
(继承自 NetworkBase。)
受保护的方法SendAsync(SslStream, Byte)
发送消息给套接字,直到完成的时候返回,经过测试,本方法是线程安全的。
Send a message to the socket until it returns when completed. After testing, this method is thread-safe.
(继承自 NetworkBase。)
受保护的方法SendAsync(Socket, Byte)
发送消息给套接字,直到完成的时候返回,经过测试,本方法是线程安全的。
Send a message to the socket until it returns when completed. After testing, this method is thread-safe.
(继承自 NetworkBase。)
受保护的方法SendAsync(SslStream, Byte, Int32, Int32)
发送消息给套接字,直到完成的时候返回,经过测试,本方法是线程安全的。
Send a message to the socket until it returns when completed. After testing, this method is thread-safe.
(继承自 NetworkBase。)
受保护的方法SendAsync(Socket, Byte, Int32, Int32)
发送消息给套接字,直到完成的时候返回,经过测试,本方法是线程安全的。
Send a message to the socket until it returns when completed. After testing, this method is thread-safe.
(继承自 NetworkBase。)
受保护的方法SendBaseAndCheckReceive
[自校验] 发送字节数据并确认对方接收完成数据,如果结果异常,则结束通讯
[Self-check] Send the byte data and confirm that the other party has received the completed data. If the result is abnormal, the communication ends.
(继承自 NetworkBase。)
受保护的方法SendBaseAndCheckReceiveAsync
[自校验] 发送字节数据并确认对方接收完成数据,如果结果异常,则结束通讯
[Self-check] Send the byte data and confirm that the other party has received the completed data. If the result is abnormal, the communication ends.
(继承自 NetworkBase。)
受保护的方法SendBytesAndCheckReceive
[自校验] 发送字节数据并确认对方接收完成数据,如果结果异常,则结束通讯
[Self-check] Send the byte data and confirm that the other party has received the completed data. If the result is abnormal, the communication ends.
(继承自 NetworkBase。)
受保护的方法SendBytesAndCheckReceiveAsync
[自校验] 发送字节数据并确认对方接收完成数据,如果结果异常,则结束通讯
[Self-check] Send the byte data and confirm that the other party has received the completed data. If the result is abnormal, the communication ends.
(继承自 NetworkBase。)
受保护的方法SendMqttFile(Socket, Stream, String, String, ActionInt64, Int64, AesCryptography, HslCancelToken)
使用MQTT协议将一个数据流发送到网络上去,需要保存的文件名,可选指定文件描述信息,进度报告
Use the MQTT protocol to send a data stream to the network, the file name that needs to be saved, optional file description information, progress report
(继承自 NetworkBase。)
受保护的方法SendMqttFile(Socket, String, String, String, ActionInt64, Int64, AesCryptography, HslCancelToken)
使用MQTT协议将一个文件发送到网络上去,需要指定文件名,保存的文件名,可选指定文件描述信息,进度报告
To send a file to the network using the MQTT protocol, you need to specify the file name, the saved file name, optionally specify the file description information, and the progress report
(继承自 NetworkBase。)
受保护的方法SendMqttFileAsync(Socket, Stream, String, String, ActionInt64, Int64, AesCryptography, HslCancelToken)
使用MQTT协议将一个数据流发送到网络上去,需要保存的文件名,可选指定文件描述信息,进度报告
Use the MQTT protocol to send a data stream to the network, the file name that needs to be saved, optional file description information, progress report
(继承自 NetworkBase。)
受保护的方法SendMqttFileAsync(Socket, String, String, String, ActionInt64, Int64, AesCryptography, HslCancelToken)
使用MQTT协议将一个文件发送到网络上去,需要指定文件名,保存的文件名,可选指定文件描述信息,进度报告
To send a file to the network using the MQTT protocol, you need to specify the file name, the saved file name, optionally specify the file description information, and the progress report
(继承自 NetworkBase。)
受保护的方法SendMqttStream
使用MQTT协议将流中的数据读取到字节数组,然后都写入到socket里面,可以指定进度报告,主要用于将文件发送到网络。
Use the MQTT protocol to read the data in the stream into a byte array, and then write them all into the socket. You can specify a progress report, which is mainly used to send files to the network.
(继承自 NetworkBase。)
受保护的方法SendMqttStreamAsync
使用MQTT协议将流中的数据读取到字节数组,然后都写入到socket里面,可以指定进度报告,主要用于将文件发送到网络。
Use the MQTT protocol to read the data in the stream into a byte array, and then write them all into the socket. You can specify a progress report, which is mainly used to send files to the network.
(继承自 NetworkBase。)
受保护的方法SendStreamToSocket
发送一个流的所有数据到指定的网络套接字,需要指定发送的数据长度,支持按照百分比的进度报告
Send all the data of a stream to the specified network socket. You need to specify the length of the data to be sent. It supports the progress report in percentage.
(继承自 NetworkBase。)
受保护的方法SendStreamToSocketAsync
发送一个流的所有数据到指定的网络套接字,需要指定发送的数据长度,支持按照百分比的进度报告
Send all the data of a stream to the specified network socket. You need to specify the length of the data to be sent. It supports the progress report in percentage.
(继承自 NetworkBase。)
受保护的方法SendStringAndCheckReceive(Socket, Int32, String)
[自校验] 直接发送字符串数据并确认对方接收完成数据,如果结果异常,则结束通讯
[Self-checking] Send string data directly and confirm that the other party has received the completed data. If the result is abnormal, the communication ends.
(继承自 NetworkBase。)
受保护的方法SendStringAndCheckReceive(Socket, Int32, String)
[自校验] 直接发送字符串数组并确认对方接收完成数据,如果结果异常,则结束通讯
[Self-check] Send string array directly and confirm that the other party has received the completed data. If the result is abnormal, the communication ends.
(继承自 NetworkBase。)
受保护的方法SendStringAndCheckReceiveAsync(Socket, Int32, String)
[自校验] 直接发送字符串数据并确认对方接收完成数据,如果结果异常,则结束通讯
[Self-checking] Send string data directly and confirm that the other party has received the completed data. If the result is abnormal, the communication ends.
(继承自 NetworkBase。)
受保护的方法SendStringAndCheckReceiveAsync(Socket, Int32, String)
[自校验] 直接发送字符串数组并确认对方接收完成数据,如果结果异常,则结束通讯
[Self-check] Send string array directly and confirm that the other party has received the completed data. If the result is abnormal, the communication ends.
(继承自 NetworkBase。)
公共方法SetAdd(String, String)
将一个member 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略。假如 key 不存在,则创建一个只包含 member 元素作成员的集合。当 key 不是集合类型时,返回一个错误。
公共方法SetAdd(String, String)
将一个或多个 member 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略。假如 key 不存在,则创建一个只包含 member 元素作成员的集合。当 key 不是集合类型时,返回一个错误。
公共方法SetAddAsync(String, String)
将一个member 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略。假如 key 不存在,则创建一个只包含 member 元素作成员的集合。当 key 不是集合类型时,返回一个错误。
公共方法SetAddAsync(String, String)
将一个或多个 member 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略。假如 key 不存在,则创建一个只包含 member 元素作成员的集合。当 key 不是集合类型时,返回一个错误。
公共方法SetCard
返回集合 key 的基数(集合中元素的数量)。当 key 不存在时,返回 0 。
公共方法SetCardAsync
返回集合 key 的基数(集合中元素的数量)。当 key 不存在时,返回 0 。
公共方法SetDiff(String, String)
返回一个集合的全部成员,该集合是所有给定集合之间的差集。
公共方法SetDiff(String, String)
返回一个集合的全部成员,该集合是所有给定集合之间的差集。
公共方法SetDiffAsync(String, String)
返回一个集合的全部成员,该集合是所有给定集合之间的差集。
公共方法SetDiffAsync(String, String)
返回一个集合的全部成员,该集合是所有给定集合之间的差集。
公共方法SetDiffStore(String, String, String)
这个命令的作用和 SDIFF 类似,但它将结果保存到 destination 集合,而不是简单地返回结果集。如果 destination 集合已经存在,则将其覆盖。destination 可以是 key 本身。
公共方法SetDiffStore(String, String, String)
这个命令的作用和 SDIFF 类似,但它将结果保存到 destination 集合,而不是简单地返回结果集。如果 destination 集合已经存在,则将其覆盖。destination 可以是 key 本身。
公共方法SetDiffStoreAsync(String, String, String)
这个命令的作用和 SDIFF 类似,但它将结果保存到 destination 集合,而不是简单地返回结果集。如果 destination 集合已经存在,则将其覆盖。destination 可以是 key 本身。
公共方法SetDiffStoreAsync(String, String, String)
这个命令的作用和 SDIFF 类似,但它将结果保存到 destination 集合,而不是简单地返回结果集。如果 destination 集合已经存在,则将其覆盖。destination 可以是 key 本身。
公共方法SetInter(String, String)
返回一个集合的全部成员,该集合是所有给定集合的交集。不存在的 key 被视为空集。当给定集合当中有一个空集时,结果也为空集(根据集合运算定律)。
公共方法SetInter(String, String)
返回一个集合的全部成员,该集合是所有给定集合的交集。不存在的 key 被视为空集。当给定集合当中有一个空集时,结果也为空集(根据集合运算定律)。
公共方法SetInterAsync(String, String)
返回一个集合的全部成员,该集合是所有给定集合的交集。不存在的 key 被视为空集。当给定集合当中有一个空集时,结果也为空集(根据集合运算定律)。
公共方法SetInterAsync(String, String)
返回一个集合的全部成员,该集合是所有给定集合的交集。不存在的 key 被视为空集。当给定集合当中有一个空集时,结果也为空集(根据集合运算定律)。
公共方法SetInterStore(String, String, String)
这个命令类似于 SINTER 命令,但它将结果保存到 destination 集合,而不是简单地返回结果集。如果 destination 集合已经存在,则将其覆盖。destination 可以是 key 本身。
公共方法SetInterStore(String, String, String)
这个命令类似于 SINTER 命令,但它将结果保存到 destination 集合,而不是简单地返回结果集。如果 destination 集合已经存在,则将其覆盖。destination 可以是 key 本身。
公共方法SetInterStoreAsync(String, String, String)
这个命令类似于 SINTER 命令,但它将结果保存到 destination 集合,而不是简单地返回结果集。如果 destination 集合已经存在,则将其覆盖。destination 可以是 key 本身。
公共方法SetInterStoreAsync(String, String, String)
这个命令类似于 SINTER 命令,但它将结果保存到 destination 集合,而不是简单地返回结果集。如果 destination 集合已经存在,则将其覆盖。destination 可以是 key 本身。
公共方法SetIsMember
判断 member 元素是否集合 key 的成员。如果 member 元素是集合的成员,返回 1 。如果 member 元素不是集合的成员,或 key 不存在,返回 0 。
公共方法SetIsMemberAsync
判断 member 元素是否集合 key 的成员。如果 member 元素是集合的成员,返回 1 。如果 member 元素不是集合的成员,或 key 不存在,返回 0 。
公共方法SetLoginAccount
设置当前的登录的账户名和密码信息,并启用账户验证的功能,账户名为空时设置不生效
Set the current login account name and password information, and enable the account verification function. The account name setting will not take effect when it is empty
(继承自 NetworkDoubleBase。)
公共方法SetMembers
返回集合 key 中的所有成员。不存在的 key 被视为空集合。
公共方法SetMembersAsync
返回集合 key 中的所有成员。不存在的 key 被视为空集合。
公共方法SetMove
将 member 元素从 source 集合移动到 destination 集合。如果 source 集合不存在或不包含指定的 member 元素,则 SMOVE 命令不执行任何操作,仅返回 0 。 否则, member 元素从 source 集合中被移除,并添加到 destination 集合中去。当 destination 集合已经包含 member 元素时, SMOVE 命令只是简单地将 source 集合中的 member 元素删除。 当 source 或 destination 不是集合类型时,返回一个错误。
公共方法SetMoveAsync
将 member 元素从 source 集合移动到 destination 集合。如果 source 集合不存在或不包含指定的 member 元素,则 SMOVE 命令不执行任何操作,仅返回 0 。 否则, member 元素从 source 集合中被移除,并添加到 destination 集合中去。当 destination 集合已经包含 member 元素时, SMOVE 命令只是简单地将 source 集合中的 member 元素删除。 当 source 或 destination 不是集合类型时,返回一个错误。
公共方法代码示例SetPersistentConnection
在读取数据之前可以调用本方法将客户端设置为长连接模式,相当于跳过了ConnectServer的结果验证,对异形客户端无效,当第一次进行通信时再进行创建连接请求。
Before reading the data, you can call this method to set the client to the long connection mode, which is equivalent to skipping the result verification of ConnectServer, and it is invalid for the alien client. When the first communication is performed, the connection creation request is performed.
(继承自 NetworkDoubleBase。)
公共方法SetPipeSocket
设置一个新的网络管道,一般来说不需要调用本方法,当多个网口设备共用一个网络连接时才需要使用本方法进行设置共享的管道。
To set up a new network channel, generally speaking, you do not need to call this method. This method is only needed to set up a shared channel when multiple network port devices share a network connection.
(继承自 NetworkDoubleBase。)
公共方法SetPop
移除并返回集合中的一个随机元素。如果只想获取一个随机元素,但不想该元素从集合中被移除的话,可以使用 SRANDMEMBER 命令。
公共方法SetPopAsync
移除并返回集合中的一个随机元素。如果只想获取一个随机元素,但不想该元素从集合中被移除的话,可以使用 SRANDMEMBER 命令。
公共方法SetRandomMember(String)
那么返回集合中的一个随机元素。
公共方法SetRandomMember(String, Int32)
返回集合中的多个随机元素。
如果 count 为正数,且小于集合基数,那么命令返回一个包含 count 个元素的数组,数组中的元素各不相同。如果 count 大于等于集合基数,那么返回整个集合。
如果 count 为负数,那么命令返回一个数组,数组中的元素可能会重复出现多次,而数组的长度为 count 的绝对值。
公共方法SetRandomMemberAsync(String)
那么返回集合中的一个随机元素。
公共方法SetRandomMemberAsync(String, Int32)
返回集合中的多个随机元素。
如果 count 为正数,且小于集合基数,那么命令返回一个包含 count 个元素的数组,数组中的元素各不相同。如果 count 大于等于集合基数,那么返回整个集合。
如果 count 为负数,那么命令返回一个数组,数组中的元素可能会重复出现多次,而数组的长度为 count 的绝对值。
公共方法SetRemove(String, String)
移除集合 key 中的一个元素,不存在的 member 元素会被忽略。
公共方法SetRemove(String, String)
移除集合 key 中的一个或多个 member 元素,不存在的 member 元素会被忽略。
公共方法SetRemoveAsync(String, String)
移除集合 key 中的一个元素,不存在的 member 元素会被忽略。
公共方法SetRemoveAsync(String, String)
移除集合 key 中的一个或多个 member 元素,不存在的 member 元素会被忽略。
公共方法SetUnion(String, String)
返回一个集合的全部成员,该集合是所有给定集合的并集。不存在的 key 被视为空集。
公共方法SetUnion(String, String)
返回一个或多个集合的全部成员,该集合是所有给定集合的并集。不存在的 key 被视为空集。
公共方法SetUnionAsync(String, String)
返回一个集合的全部成员,该集合是所有给定集合的并集。不存在的 key 被视为空集。
公共方法SetUnionAsync(String, String)
返回一个或多个集合的全部成员,该集合是所有给定集合的并集。不存在的 key 被视为空集。
公共方法SetUnionStore(String, String, String)
这个命令类似于 SUNION 命令,但它将结果保存到 destination 集合,而不是简单地返回结果集。如果 destination 已经存在,则将其覆盖。destination 可以是 key 本身。
公共方法SetUnionStore(String, String, String)
这个命令类似于 SUNION 命令,但它将结果保存到 destination 集合,而不是简单地返回结果集。如果 destination 已经存在,则将其覆盖。destination 可以是 key 本身。
公共方法SetUnionStoreAsync(String, String, String)
这个命令类似于 SUNION 命令,但它将结果保存到 destination 集合,而不是简单地返回结果集。如果 destination 已经存在,则将其覆盖。destination 可以是 key 本身。
公共方法SetUnionStoreAsync(String, String, String)
这个命令类似于 SUNION 命令,但它将结果保存到 destination 集合,而不是简单地返回结果集。如果 destination 已经存在,则将其覆盖。destination 可以是 key 本身。
公共方法SubscribeMessage(String)
从Redis服务器订阅一个或多个主题信息
Subscribe to one or more topics from the redis server
公共方法SubscribeMessage(String)
从Redis服务器订阅一个或多个主题信息
Subscribe to one or more topics from the redis server
公共方法ToString
Returns a string that represents the current object.
(重写 NetworkDoubleBaseToString.)
公共方法UnpackResponseContent
根据对方返回的报文命令,对命令进行基本的拆包,例如各种Modbus协议拆包为统一的核心报文,还支持对报文的验证
According to the message command returned by the other party, the command is basically unpacked, for example, various Modbus protocols are unpacked into a unified core message, and the verification of the message is also supported
(继承自 NetworkDoubleBase。)
公共方法UnSubscribeMessage(String)
取消订阅一个或多个主题信息,取消之后,当前的订阅数据就不在接收到。
Unsubscribe from multiple topic information. After cancellation, the current subscription data will not be received.
公共方法UnSubscribeMessage(String)
取消订阅一个或多个主题信息,取消之后,当前的订阅数据就不在接收到。
Unsubscribe from multiple topic information. After cancellation, the current subscription data will not be received.
公共方法代码示例WriteT
从设备里写入支持Hsl特性的数据内容, 该特性为HslRedisKeyAttributeHslRedisHashFieldAttribute 需要注意的是写入并不支持HslRedisListAttributeHslRedisListItemAttribute特性,详细参考代码示例的操作说明。
公共方法WriteAndPublishKey
将字符串值 value 关联到 key 。并发布一个订阅的频道数据,都成功时,才返回成功
公共方法WriteAndPublishKeyAsync
将字符串值 value 关联到 key 。并发布一个订阅的频道数据,都成功时,才返回成功
公共方法代码示例WriteAsyncT
从设备里写入支持Hsl特性的数据内容, 该特性为HslRedisKeyAttributeHslRedisHashFieldAttribute 需要注意的是写入并不支持HslRedisListAttributeHslRedisListItemAttribute特性,详细参考代码示例的操作说明。
公共方法WriteExpireKey
将值 value 关联到 key ,并将 key 的生存时间设为 seconds (以秒为单位)。如果 key 已经存在, SETEX 命令将覆写旧值。
公共方法WriteExpireKeyAsync
将值 value 关联到 key ,并将 key 的生存时间设为 seconds (以秒为单位)。如果 key 已经存在, SETEX 命令将覆写旧值。
公共方法WriteHashKey(String, String, String)
将哈希表 key 中的域 field 的值设为 value 。 如果 key 不存在,一个新的哈希表被创建并进行 HSET 操作。 如果域 field 已经存在于哈希表中,旧值将被覆盖。 如果 field 是哈希表中的一个新建域,并且值设置成功,返回 1 。 如果哈希表中域 field 已经存在且旧值已被新值覆盖,返回 0 。
公共方法WriteHashKey(String, String, String)
同时将多个 field-value (域-值)对设置到哈希表 key 中。 此命令会覆盖哈希表中已存在的域。 如果 key 不存在,一个空哈希表被创建并执行 HMSET 操作。
公共方法WriteHashKeyAsync(String, String, String)
将哈希表 key 中的域 field 的值设为 value 。 如果 key 不存在,一个新的哈希表被创建并进行 HSET 操作。 如果域 field 已经存在于哈希表中,旧值将被覆盖。 如果 field 是哈希表中的一个新建域,并且值设置成功,返回 1 。 如果哈希表中域 field 已经存在且旧值已被新值覆盖,返回 0 。
公共方法WriteHashKeyAsync(String, String, String)
同时将多个 field-value (域-值)对设置到哈希表 key 中。 此命令会覆盖哈希表中已存在的域。 如果 key 不存在,一个空哈希表被创建并执行 HMSET 操作。
公共方法WriteHashKeyNx
将哈希表 key 中的域 field 的值设置为 value ,当且仅当域 field 不存在。若域 field 已经存在,该操作无效。 设置成功,返回 1 。如果给定域已经存在且没有操作被执行,返回 0 。
公共方法WriteHashKeyNxAsync
将哈希表 key 中的域 field 的值设置为 value ,当且仅当域 field 不存在。若域 field 已经存在,该操作无效。 设置成功,返回 1 。如果给定域已经存在且没有操作被执行,返回 0 。
公共方法WriteKey(String, String)
将字符串值 value 关联到 key 。 如果 key 已经持有其他值, SET 就覆写旧值,无视类型。 对于某个原本带有生存时间(TTL)的键来说, 当 SET 命令成功在这个键上执行时,这个键原有的 TTL 将被清除。
公共方法WriteKey(String, String)
同时设置一个或多个 key-value 对。 如果某个给定 key 已经存在,那么 MSET 会用新值覆盖原来的旧值,如果这不是你所希望的效果,请考虑使用 MSETNX 命令:它只会在所有给定 key 都不存在的情况下进行设置操作。
公共方法WriteKeyAsync(String, String)
将字符串值 value 关联到 key 。 如果 key 已经持有其他值, SET 就覆写旧值,无视类型。 对于某个原本带有生存时间(TTL)的键来说, 当 SET 命令成功在这个键上执行时,这个键原有的 TTL 将被清除。
公共方法WriteKeyAsync(String, String)
同时设置一个或多个 key-value 对。 如果某个给定 key 已经存在,那么 MSET 会用新值覆盖原来的旧值,如果这不是你所希望的效果,请考虑使用 MSETNX 命令:它只会在所有给定 key 都不存在的情况下进行设置操作。
公共方法WriteKeyIfNotExists
将 key 的值设为 value ,当且仅当 key 不存在。若给定的 key 已经存在,则 SETNX 不做任何动作。设置成功,返回 1 。设置失败,返回 0 。
公共方法WriteKeyIfNotExistsAsync
将 key 的值设为 value ,当且仅当 key 不存在。若给定的 key 已经存在,则 SETNX 不做任何动作。设置成功,返回 1 。设置失败,返回 0 。
公共方法WriteKeyRange
用 value 参数覆写(overwrite)给定 key 所储存的字符串值,从偏移量 offset 开始。不存在的 key 当作空白字符串处理。返回被 SETRANGE 修改之后,字符串的长度。
公共方法WriteKeyRangeAsync
用 value 参数覆写(overwrite)给定 key 所储存的字符串值,从偏移量 offset 开始。不存在的 key 当作空白字符串处理。返回被 SETRANGE 修改之后,字符串的长度。
受保护的方法WriteStreamFromSocket
从套接字中接收所有的数据然后写入到指定的流当中去,需要指定数据的长度,支持按照百分比进行进度报告
Receives all data from the socket and writes it to the specified stream. The length of the data needs to be specified, and progress reporting is supported in percentage.
(继承自 NetworkBase。)
受保护的方法WriteStreamFromSocketAsync
从套接字中接收所有的数据然后写入到指定的流当中去,需要指定数据的长度,支持按照百分比进行进度报告
Receives all data from the socket and writes it to the specified stream. The length of the data needs to be specified, and progress reporting is supported in percentage.
(继承自 NetworkBase。)
公共方法ZSetAdd(String, String, Double)
将一个 member 元素及其 score 值加入到有序集 key 当中。如果某个 member 已经是有序集的成员,那么更新这个 member 的 score 值,并通过重新插入这个 member 元素,来保证该 member 在正确的位置上。 score 值可以是整数值或双精度浮点数。
如果 key 不存在,则创建一个空的有序集并执行 ZADD 操作。当 key 存在但不是有序集类型时,返回一个错误。
公共方法ZSetAdd(String, String, Double)
将一个或多个 member 元素及其 score 值加入到有序集 key 当中。如果某个 member 已经是有序集的成员,那么更新这个 member 的 score 值,并通过重新插入这个 member 元素,来保证该 member 在正确的位置上。 score 值可以是整数值或双精度浮点数。
如果 key 不存在,则创建一个空的有序集并执行 ZADD 操作。当 key 存在但不是有序集类型时,返回一个错误。
公共方法ZSetAddAsync(String, String, Double)
将一个 member 元素及其 score 值加入到有序集 key 当中。如果某个 member 已经是有序集的成员,那么更新这个 member 的 score 值,并通过重新插入这个 member 元素,来保证该 member 在正确的位置上。 score 值可以是整数值或双精度浮点数。
如果 key 不存在,则创建一个空的有序集并执行 ZADD 操作。当 key 存在但不是有序集类型时,返回一个错误。
公共方法ZSetAddAsync(String, String, Double)
将一个或多个 member 元素及其 score 值加入到有序集 key 当中。如果某个 member 已经是有序集的成员,那么更新这个 member 的 score 值,并通过重新插入这个 member 元素,来保证该 member 在正确的位置上。 score 值可以是整数值或双精度浮点数。
如果 key 不存在,则创建一个空的有序集并执行 ZADD 操作。当 key 存在但不是有序集类型时,返回一个错误。
公共方法ZSetCard
返回有序集 key 的基数。
公共方法ZSetCardAsync
返回有序集 key 的基数。
公共方法ZSetCount
返回有序集 key 中, score 值在 min 和 max 之间(默认包括 score 值等于 min 或 max )的成员的数量。
公共方法ZSetCountAsync
返回有序集 key 中, score 值在 min 和 max 之间(默认包括 score 值等于 min 或 max )的成员的数量。
公共方法ZSetIncreaseBy
为有序集 key 的成员 member 的 score 值加上增量 increment 。可以通过传递一个负数值 increment ,让 score 减去相应的值,比如 ZINCRBY key -5 member ,就是让 member 的 score 值减去 5 。 当 key 不存在,或 member 不是 key 的成员时, ZINCRBY key increment member 等同于 ZADD key increment member 。当 key 不是有序集类型时,返回一个错误。
公共方法ZSetIncreaseByAsync
为有序集 key 的成员 member 的 score 值加上增量 increment 。可以通过传递一个负数值 increment ,让 score 减去相应的值,比如 ZINCRBY key -5 member ,就是让 member 的 score 值减去 5 。 当 key 不存在,或 member 不是 key 的成员时, ZINCRBY key increment member 等同于 ZADD key increment member 。当 key 不是有序集类型时,返回一个错误。
公共方法ZSetRange
返回有序集 key 中,指定区间内的成员。其中成员的位置按 score 值递增(从小到大)来排序。具有相同 score 值的成员按字典序来排列。 下标参数 start 和 stop 都以 0 为底,也就是说,以 0 表示有序集第一个成员,以 1 表示有序集第二个成员,以此类推。你也可以使用负数下标,以 -1 表示最后一个成员, -2 表示倒数第二个成员,以此类推。
公共方法ZSetRangeAsync
返回有序集 key 中,指定区间内的成员。其中成员的位置按 score 值递增(从小到大)来排序。具有相同 score 值的成员按字典序来排列。 下标参数 start 和 stop 都以 0 为底,也就是说,以 0 表示有序集第一个成员,以 1 表示有序集第二个成员,以此类推。你也可以使用负数下标,以 -1 表示最后一个成员, -2 表示倒数第二个成员,以此类推。
公共方法ZSetRangeByScore
返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。有序集成员按 score 值递增(从小到大)次序排列。 min 和 max 可以是 -inf 和 +inf ,这样一来,你就可以在不知道有序集的最低和最高 score 值的情况下,使用 ZRANGEBYSCORE 这类命令。 默认情况下,区间的取值使用闭区间 (小于等于或大于等于),你也可以通过给参数前增加 "(" 符号来使用可选的开区间 (小于或大于)。"(5"代表不包含5
公共方法ZSetRangeByScoreAsync
返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。有序集成员按 score 值递增(从小到大)次序排列。 min 和 max 可以是 -inf 和 +inf ,这样一来,你就可以在不知道有序集的最低和最高 score 值的情况下,使用 ZRANGEBYSCORE 这类命令。 默认情况下,区间的取值使用闭区间 (小于等于或大于等于),你也可以通过给参数前增加 "(" 符号来使用可选的开区间 (小于或大于)。"(5"代表不包含5
公共方法ZSetRank
返回有序集 key 中成员 member 的排名。其中有序集成员按 score 值递增(从小到大)顺序排列。排名以 0 为底,也就是说, score 值最小的成员排名为 0 。
公共方法ZSetRankAsync
返回有序集 key 中成员 member 的排名。其中有序集成员按 score 值递增(从小到大)顺序排列。排名以 0 为底,也就是说, score 值最小的成员排名为 0 。
公共方法ZSetRemove(String, String)
移除有序集 key 中的指定成员,不存在的成员将被忽略。当 key 存在但不是有序集类型时,返回一个错误。
公共方法ZSetRemove(String, String)
移除有序集 key 中的一个或多个成员,不存在的成员将被忽略。当 key 存在但不是有序集类型时,返回一个错误。
公共方法ZSetRemoveAsync(String, String)
移除有序集 key 中的指定成员,不存在的成员将被忽略。当 key 存在但不是有序集类型时,返回一个错误。
公共方法ZSetRemoveAsync(String, String)
移除有序集 key 中的一个或多个成员,不存在的成员将被忽略。当 key 存在但不是有序集类型时,返回一个错误。
公共方法ZSetRemoveRangeByRank
移除有序集 key 中,指定排名(rank)区间内的所有成员。区间分别以下标参数 start 和 stop 指出,包含 start 和 stop 在内。 下标参数 start 和 stop 都以 0 为底,也就是说,以 0 表示有序集第一个成员,以 1 表示有序集第二个成员,以此类推。你也可以使用负数下标,以 -1 表示最后一个成员, -2 表示倒数第二个成员,以此类推。
公共方法ZSetRemoveRangeByRankAsync
移除有序集 key 中,指定排名(rank)区间内的所有成员。区间分别以下标参数 start 和 stop 指出,包含 start 和 stop 在内。 下标参数 start 和 stop 都以 0 为底,也就是说,以 0 表示有序集第一个成员,以 1 表示有序集第二个成员,以此类推。你也可以使用负数下标,以 -1 表示最后一个成员, -2 表示倒数第二个成员,以此类推。
公共方法ZSetRemoveRangeByScore
移除有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。 min 和 max 可以是 -inf 和 +inf ,这样一来,你就可以在不知道有序集的最低和最高 score 值的情况下,使用 ZRANGEBYSCORE 这类命令。 默认情况下,区间的取值使用闭区间 (小于等于或大于等于),你也可以通过给参数前增加 "(" 符号来使用可选的开区间 (小于或大于)。例如"(5"代表不包括5
公共方法ZSetRemoveRangeByScoreAsync
移除有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。 min 和 max 可以是 -inf 和 +inf ,这样一来,你就可以在不知道有序集的最低和最高 score 值的情况下,使用 ZRANGEBYSCORE 这类命令。 默认情况下,区间的取值使用闭区间 (小于等于或大于等于),你也可以通过给参数前增加 "(" 符号来使用可选的开区间 (小于或大于)。例如"(5"代表不包括5
公共方法ZSetReverseRange
返回有序集 key 中,指定区间内的成员。其中成员的位置按 score 值递减(从大到小)来排列。具有相同 score 值的成员按字典序来排列。 下标参数 start 和 stop 都以 0 为底,也就是说,以 0 表示有序集第一个成员,以 1 表示有序集第二个成员,以此类推。你也可以使用负数下标,以 -1 表示最后一个成员, -2 表示倒数第二个成员,以此类推。
公共方法ZSetReverseRangeAsync
返回有序集 key 中,指定区间内的成员。其中成员的位置按 score 值递减(从大到小)来排列。具有相同 score 值的成员按字典序来排列。 下标参数 start 和 stop 都以 0 为底,也就是说,以 0 表示有序集第一个成员,以 1 表示有序集第二个成员,以此类推。你也可以使用负数下标,以 -1 表示最后一个成员, -2 表示倒数第二个成员,以此类推。
公共方法ZSetReverseRangeByScore
返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。序集成员按 score 值递减(从大到小)的次序排列。 min 和 max 可以是 -inf 和 +inf ,这样一来,你就可以在不知道有序集的最低和最高 score 值的情况下,使用 ZRANGEBYSCORE 这类命令。 默认情况下,区间的取值使用闭区间 (小于等于或大于等于),你也可以通过给参数前增加 ( 符号来使用可选的开区间 (小于或大于)。(5代表不包含5
公共方法ZSetReverseRangeByScoreAsync
返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。序集成员按 score 值递减(从大到小)的次序排列。 min 和 max 可以是 -inf 和 +inf ,这样一来,你就可以在不知道有序集的最低和最高 score 值的情况下,使用 ZRANGEBYSCORE 这类命令。 默认情况下,区间的取值使用闭区间 (小于等于或大于等于),你也可以通过给参数前增加 ( 符号来使用可选的开区间 (小于或大于)。(5代表不包含5
公共方法ZSetReverseRank
返回有序集 key 中成员 member 的排名。其中有序集成员按 score 值递减(从大到小)排序。排名以 0 为底,也就是说,score 值最大的成员排名为 0 。
公共方法ZSetReverseRankAsync
返回有序集 key 中成员 member 的排名。其中有序集成员按 score 值递减(从大到小)排序。排名以 0 为底,也就是说,score 值最大的成员排名为 0 。
公共方法ZSetScore
返回有序集 key 中,成员 member 的 score 值。如果 member 元素不是有序集 key 的成员,或 key 不存在,返回 nil 。
公共方法ZSetScoreAsync
返回有序集 key 中,成员 member 的 score 值。如果 member 元素不是有序集 key 的成员,或 key 不存在,返回 nil 。
Top
事件
  名称说明
公共事件OnRedisMessageReceived
当接收到Redis订阅的信息的时候触发
Top
字段
  名称说明
受保护的字段fileCacheSize
文件传输的时候的缓存大小,直接影响传输的速度,值越大,传输速度越快,越占内存,默认为100K大小
The size of the cache during file transfer directly affects the speed of the transfer. The larger the value, the faster the transfer speed and the more memory it takes. The default size is 100K.
(继承自 NetworkBase。)
受保护的字段isPersistentConn
是否是长连接的状态
Whether it is a long connection state
(继承自 NetworkDoubleBase。)
受保护的字段isUseAccountCertificate
是否使用账号登录,这个账户登录的功能是HSL组件创建的服务器特有的功能。
Whether to log in using an account. The function of this account login is a server-specific function created by the HSL component.
(继承自 NetworkDoubleBase。)
受保护的字段LogMsgFormatBinary
设置日志记录报文是否二进制,如果为False,那就使用ASCII码
Set whether the log message is binary, if it is False, then use ASCII code
(继承自 NetworkDoubleBase。)
受保护的字段pipeSocket
当前的网络的管道信息
(继承自 NetworkDoubleBase。)
Top
扩展方法
  名称说明
公共扩展器方法ToJsonString
获取当前对象的JSON格式表示的字符串。
Gets the string represented by the JSON format of the current object.
(由 HslExtension 定义。)
Top
备注
本类库的API指令的参考及注释来源:http://doc.redisfans.com/index.html
示例
基本的操作如下所示,举例了几个比较常见的指令,更多的需要参考api接口描述
基本操作代码
RedisClient redis = new RedisClient( "127.0.0.1", 6379, string.Empty );
// 如果连接服务器
OperateResult connect = redis.ConnectServer( );
if (connect.IsSuccess)
{
    Console.WriteLine( "connect success" );
}
else
{
    Console.WriteLine( "connect failed" );
    return;
}

// 连接服务器之后,默认选择的是db0,如果需要选择db1
redis.SelectDB( 1 );

// 好了,接下来是基本的读写操作
redis.WriteKey( "A", "test1" );
OperateResult<string> readA = redis.ReadKey( "A" );

// 支持批量读写操作
redis.WriteKey( new string[] { "A", "B", "C" }, new string[] { "test1", "test2", "test3" } );
OperateResult<string[]> readB = redis.ReadKey( new string[] { "A", "B", "C" } );

// 支持写入有效期的关键字,过两秒后读就不见了
redis.WriteExpireKey( "A", "test1", 2 );

// 自增自减操作
redis.WriteKey( "A", "1" );
OperateResult<long> result = redis.IncrementKey( "A" ); // A就变成2了,并且返回2
result = redis.DecrementKey( "A" ); // A就变成1了,并且返回1

// 列表的操作
redis.ListLeftPush( "List", "3" );
redis.ListLeftPush( "List", "2" );
redis.ListLeftPush( "List", "1" );  // 这样就生成了一个List的列表 [1,2,3]
var lists = redis.ListRange( "List", 0, -1 ); // 读取到了List的所有数据
var listIndex1 = redis.ReadListByIndex( "List", 1 ); // 读取某一个元素
var listLength = redis.GetListLength( "List" ).Content;  // 获取数组的长度
redis.ListTrim( "List", 0, 1 );   // 只保留2个元素

// 哈希键的操作
redis.WriteHashKey( "Hash", "A", "test1" );
redis.WriteHashKey( "Hash", "B", "test2" );
redis.WriteHashKey( "Hash", "C", "test3" );
redis.ReadHashKey( "Hash", "A" );   // 读取单个的值,返回test1
redis.ReadHashKeys( "Hash" );   // 读取所有域,["A","B","C"]
redis.ReadHashValues( "Hash" );  // 读取所有的值,["test1", "test2", "text3"]

// 其他的操作详细参考类的api文档信息

// 关闭
redis.ConnectClose( );
如下是基于特性的操作,有必要说明以下:
基础的使用
RedisClient redis = new RedisClient( "127.0.0.1", 6379, string.Empty );
redis.ConnectServer( );

// 上面是连接,此处不关心,只关心读数情况
// The above is the connection, here does not care, only care about the reading
OperateResult<string> readA = redis.ReadKey( "A" );
OperateResult<string> readB = redis.ReadKey( "B" );
OperateResult<string> readC = redis.ReadKey( "C" );
OperateResult<string> readD = redis.ReadKey( "D" );

if (readA.IsSuccess && readB.IsSuccess && readC.IsSuccess && readD.IsSuccess)
{
    // do somethong
}


// 当然你也可以这么干,加快读取的速度,并且代码更加简洁
// Of course, you can also do this, speed up the reading speed, and the code is more concise
OperateResult<string[]> readAD = redis.ReadKey( new string[] { "A", "B", "C", "D" } );
if (readAD.IsSuccess)
{
    // do something
    // A = readAD.Content[0]
    // B = readAD.Content[0]
    // C = readAD.Content[0]
    // D = readAD.Content[0]
}

// 当你需要读取加转换代码的时候,就没有那么方便了
// When you need to read plus conversion code, it is not so convenient
OperateResult<string[]> readAD2 = redis.ReadKey( new string[] { "A", "B", "C", "D" } );
if (readAD.IsSuccess)
{
    // 我们假设读取的所有数据需要转换int类型数据
    // We assume that all data read needs to be converted to int data
    int[] buffer = readAD2.Content.Select( m => int.Parse( m ) ).ToArray( );

    // do something
}

// 当你还要读取其他的信息的时候,就不得不多写点代码了
// When you need to read other information, you have to write more code
OperateResult<string> readListA = redis.ReadListByIndex( "List", 0 );
OperateResult<string> readHashA1 = redis.ReadHashKey( "HashA", "A1" );
OperateResult<string> readHashA2 = redis.ReadHashKey( "HashA", "A2" );
// ...
// and so on

redis.ConnectClose( );
总的来说,当读取的数据种类比较多的时候,读取的关键字比较多的时候,处理起来就比较的麻烦,此处推荐一个全新的写法,为了更好的对比,我们假设实现一种需求
同等代码
RedisClient redis = new RedisClient( "127.0.0.1", 6379, string.Empty );
redis.ConnectServer( );

// 上面是连接,此处不关心,只关心读数情况
// The above is the connection, here does not care, only care about the reading

// 我们来看看下面的两种等效写法,就可以发现此处的新写法是多么的便捷
// Let's take a look at the two equivalents below to see how convenient the new writing is here

// 假设下面是我们需要读取的,并且转化数据的,读取的数据在redis是真实存在的
// Suppose the following is what we need to read and transform the data. The read data is real in redis
OperateResult<string> readA = redis.ReadKey( "A" );
OperateResult<string> readB = redis.ReadKey( "B" );
OperateResult<string> readC = redis.ReadKey( "C" );
OperateResult<string> readD = redis.ReadKey( "D" );
OperateResult<string> readE = redis.ReadListByIndex( "E", 0 );
OperateResult<string[]> readF = redis.ListRange( "F", 0, -1 );
OperateResult<string[]> readG = redis.ReadHashKey( "G", new string[] { "G1", "G2", "G4" } );
OperateResult<string> readH = redis.ReadHashKey( "H", "H1" );

if (readA.IsSuccess && readB.IsSuccess && readC.IsSuccess && readD.IsSuccess &&
    readE.IsSuccess && readF.IsSuccess && readG.IsSuccess && readH.IsSuccess)
{
    // 进行相关的数据转换
    // Perform related data conversion
    string A = readA.Content;
    int B = int.Parse( readB.Content );
    ushort C = ushort.Parse( readC.Content );
    double D = double.Parse( readD.Content );
    float E = float.Parse( readE.Content );
    float[] F = readF.Content.Select( m => float.Parse( m ) ).ToArray( );
    int G1 = int.Parse( readG.Content[0] );
    int G2 = int.Parse( readG.Content[1] );
    int G3 = int.Parse( readG.Content[2] );
    string H = readH.Content;

    // do something
}

// 现在我们紧紧只需要一行代码即可完成任务,前提定义一个数据对象,还可以形成数据复用
// Now we need only one line of code to complete the task, provided that a data object is defined and data reuse can be formed
OperateResult<MyClass> read = redis.Read<MyClass>( );
if (read.IsSuccess)
{
    // do something
}

redis.ConnectClose( );
为此我们只需要实现一个特性类即可。代码如下:(注意,实际是很灵活的,类型都是自动转换的)
数据类
public class MyClass
{
    [HslCommunication.Reflection.HslRedisKey( "A" )]
    public string A { get; set; }

    [HslCommunication.Reflection.HslRedisKey( "B" )]
    public int B { get; set; }

    [HslCommunication.Reflection.HslRedisKey( "C" )]
    public ushort C { get; set; }

    [HslCommunication.Reflection.HslRedisKey( "D" )]
    public double D { get; set; }

    [HslCommunication.Reflection.HslRedisListItem( "E", 0 )]
    public float E { get; set; }

    [HslCommunication.Reflection.HslRedisList( "F", 0, -1 )]
    public float[] F { get; set; }

    [HslCommunication.Reflection.HslRedisHashField( "G", "G1" )]
    public int G1 { get; set; }

    [HslCommunication.Reflection.HslRedisHashField( "G", "G2" )]
    public int G2 { get; set; }

    [HslCommunication.Reflection.HslRedisHashField( "G", "G3" )]
    public int G3 { get; set; }

    [HslCommunication.Reflection.HslRedisHashField( "H", "H1" )]
    public string H { get; set; }
}
参见