国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频

【干貨】.NET/C#中使用Redis

共 17469字,需瀏覽 35分鐘

 ·

2020-12-24 00:17

簡(jiǎn)介

在C#中使用Redis,一般有兩種方式:

1、ServiceStack.Redis,據(jù)說是Redis官方推薦使用的驅(qū)動(dòng)類庫(kù),但是是收費(fèi)的。

2、StackExchange.Redis,可能性能要比ServiceStack.Redis差點(diǎn),但是是免費(fèi)的。

本次使用StackExchange.Redis來實(shí)現(xiàn)Redis操作。

添加StackExchange.Redis引用

想要在C#中使用Redis,首先得要有個(gè)Redis支持的C#版的驅(qū)動(dòng)。

通過網(wǎng)絡(luò)下載或nuget安裝,得到Redis相關(guān)的dll,添加到項(xiàng)目中引用。這里介紹下通過NuGet方式添加

第一步:在項(xiàng)目中右鍵,選擇管理NuGet管理包

第二步:搜索StackExchange.Redis添加,我這里已經(jīng)添加過了所以沒有添加按鈕

通過這兩步,會(huì)在項(xiàng)目中自動(dòng)添加StackExchange.Redis引用

有需要的可以自行添加Newtonsoft.Json引用

StackExchange.Redis.dll:Redis驅(qū)動(dòng)程序

連接數(shù)據(jù)庫(kù)

在連接數(shù)據(jù)庫(kù)之前,請(qǐng)確保Redis數(shù)據(jù)庫(kù)服務(wù)已經(jīng)啟動(dòng)。

StackExchange.Redis核心代碼都在ConnectionMultiplexer類中,這個(gè)類的實(shí)例不需要在每個(gè)操作中不停的創(chuàng)建,一般都會(huì)封裝為單例模式共享使用該對(duì)象實(shí)例。

1.連接字符串(redis數(shù)據(jù)庫(kù)默認(rèn)端口為:6379)

private static readonly string ConnectionWriteString = "127.0.0.1:6379";

2.創(chuàng)建連接

private static readonly IConnectionMultiplexer ConnMultiplexer = ConnectionMultiplexer.Connect(ConnectionWriteString);

3.數(shù)據(jù)庫(kù)

private readonly IDatabase _db=ConnMultiplexer.GetDatabase(0);//參數(shù)為創(chuàng)建的數(shù)據(jù)庫(kù)的位置

操作String類型方法封裝

? ? ? ??///


? ? ? ? /// 設(shè)置 key 并保存字符串(如果 key 已存在,則覆蓋值)
? ? ? ? ///

? ? ? ? /// 名稱
? ? ? ? ///
? ? ? ? /// 時(shí)間
? ? ? ? ///
? ? ? ? public bool StringSet(string redisKey, string redisValue, TimeSpan? expiry = null)
? ? ? ? {
? ? ? ? ? ? return _db.StringSet(redisKey, redisValue, expiry);
? ? ? ? }

? ? ? ? ///


? ? ? ? /// 獲取字符串
? ? ? ? ///

? ? ? ? /// 名稱
? ? ? ? /// 時(shí)間
? ? ? ? ///
? ? ? ? public string StringGet(string redisKey, TimeSpan? expiry = null)
? ? ? ? {
? ? ? ? ? ? return _db.StringGet(redisKey);
? ? ? ? }

? ? ? ? ///


? ? ? ? /// 存儲(chǔ)一個(gè)對(duì)象(該對(duì)象會(huì)被序列化保存)
? ? ? ? ///

? ? ? ? /// 名稱
? ? ? ? ///
? ? ? ? /// 時(shí)間
? ? ? ? ///
? ? ? ? public bool StringSet(string redisKey, T redisValue, TimeSpan? expiry = null)
? ? ? ? {
? ? ? ? ? ? var json = Serialize(redisValue);
? ? ? ? ? ? return _db.StringSet(redisKey, json, expiry);
? ? ? ? }

? ? ? ? ///


? ? ? ? /// 獲取一個(gè)對(duì)象(會(huì)進(jìn)行反序列化)
? ? ? ? ///

? ? ? ? /// 名稱
? ? ? ? /// 時(shí)間
? ? ? ? ///
? ? ? ? public T StringGet(string redisKey, TimeSpan? expiry = null)
? ? ? ? {
? ? ? ? ? ? return Deserialize(_db.StringGet(redisKey));
? ? ? ? }

操作Hash類型方法封裝

? ? ??? ///


? ? ? ? /// 判斷該字段是否存在 hash 中
? ? ? ? ///

? ? ? ? ///
? ? ? ? ///
? ? ? ? ///
? ? ? ? public bool HashExists(string redisKey, string hashField)
? ? ? ? {
? ? ? ? ? ? return _db.HashExists(redisKey, hashField);
? ? ? ? }

? ? ? ? ///


? ? ? ? /// 從 hash 中移除指定字段
? ? ? ? ///

? ? ? ? ///
? ? ? ? ///
? ? ? ? ///
? ? ? ? public bool HashDelete(string redisKey, string hashField)
? ? ? ? {
? ? ? ? ? ? return _db.HashDelete(redisKey, hashField);
? ? ? ? }

? ? ? ? ///


? ? ? ? /// 從 hash 中移除指定字段(多個(gè)刪除)
? ? ? ? ///

? ? ? ? ///
? ? ? ? ///
? ? ? ? ///
? ? ? ? public long HashDelete(string redisKey, IEnumerable hashField)
? ? ? ? {
? ? ? ? ? ? return _db.HashDelete(redisKey, hashField.ToArray());
? ? ? ? }

? ? ? ? ///


? ? ? ? /// 在 hash 設(shè)定值
? ? ? ? ///

? ? ? ? ///
? ? ? ? ///
? ? ? ? ///
? ? ? ? ///
? ? ? ? public bool HashSet(string redisKey, string hashField, string value)
? ? ? ? {
? ? ? ? ? ? return _db.HashSet(redisKey, hashField, value);
? ? ? ? }

? ? ? ? ///


? ? ? ? /// 在 hash 中設(shè)定值(多個(gè))
? ? ? ? ///

? ? ? ? ///
? ? ? ? ///
? ? ? ? public void HashSet(string redisKey, IEnumerable hashFields)
? ? ? ? {
? ? ? ? ? ? _db.HashSet(redisKey, hashFields.ToArray());
? ? ? ? }

? ? ? ? ///


? ? ? ? /// 在 hash 中獲取值
? ? ? ? ///

? ? ? ? ///
? ? ? ? ///
? ? ? ? ///
? ? ? ? public RedisValue HashGet(string redisKey, string hashField)
? ? ? ? {
? ? ? ? ? ? return _db.HashGet(redisKey, hashField);
? ? ? ? }

? ? ? ? ///


? ? ? ? /// 在 hash 中獲取值(多個(gè))
? ? ? ? ///

? ? ? ? ///
? ? ? ? ///
? ? ? ? ///
? ? ? ? ///
? ? ? ? public RedisValue[] HashGet(string redisKey, RedisValue[] hashField, string value)
? ? ? ? {
? ? ? ? ? ? return _db.HashGet(redisKey, hashField);
? ? ? ? }

? ? ? ? ///


? ? ? ? /// 從 hash 返回所有的字段值
? ? ? ? ///

? ? ? ? ///
? ? ? ? ///
? ? ? ? public IEnumerable HashKeys(string redisKey)
? ? ? ? {
? ? ? ? ? ? return _db.HashKeys(redisKey);
? ? ? ? }

? ? ? ? ///


? ? ? ? /// 返回 hash 中的所有值
? ? ? ? ///

? ? ? ? ///
? ? ? ? ///
? ? ? ? public RedisValue[] HashValues(string redisKey)
? ? ? ? {
? ? ? ? ? ? return _db.HashValues(redisKey);
? ? ? ? }

? ? ? ? ///


? ? ? ? /// 在 hash 設(shè)定值(序列化)
? ? ? ? ///

? ? ? ? ///
? ? ? ? ///
? ? ? ? ///
? ? ? ? ///
? ? ? ? public bool HashSet(string redisKey, string hashField, T value)
? ? ? ? {
? ? ? ? ? ? var json = Serialize(value);
? ? ? ? ? ? return _db.HashSet(redisKey, hashField, json);
? ? ? ? }

? ? ? ? ///


? ? ? ? /// 在 hash 中獲取值(反序列化)
? ? ? ? ///

? ? ? ? ///
? ? ? ? ///
? ? ? ? ///
? ? ? ? public T HashGet(string redisKey, string hashField)
? ? ? ? {
? ? ? ? ? ? return Deserialize(_db.HashGet(redisKey, hashField));
? ? ? ? }

操作List類型方法封裝

? ? ??? ///


? ? ? ? /// 移除并返回存儲(chǔ)在該鍵列表的第一個(gè)元素
? ? ? ? ///

? ? ? ? ///
? ? ? ? ///
? ? ? ? public string ListLeftPop(string redisKey)
? ? ? ? {
? ? ? ? ? ? return _db.ListLeftPop(redisKey);
? ? ? ? }

? ? ? ? ///


? ? ? ? /// 移除并返回存儲(chǔ)在該鍵列表的最后一個(gè)元素
? ? ? ? ///

? ? ? ? ///
? ? ? ? ///
? ? ? ? public string ListRightPop(string redisKey)
? ? ? ? {
? ? ? ? ? ? return _db.ListRightPop(redisKey);
? ? ? ? }

? ? ? ? ///


? ? ? ? /// 移除列表指定鍵上與該值相同的元素
? ? ? ? ///

? ? ? ? ///
? ? ? ? ///
? ? ? ? ///
? ? ? ? public long ListRemove(string redisKey, string redisValue)
? ? ? ? {
? ? ? ? ? ? return _db.ListRemove(redisKey, redisValue);
? ? ? ? }

? ? ? ? ///


? ? ? ? /// 在列表尾部插入值。如果鍵不存在,先創(chuàng)建再插入值
? ? ? ? ///

? ? ? ? ///
? ? ? ? ///
? ? ? ? ///
? ? ? ? public long ListRightPush(string redisKey, string redisValue)
? ? ? ? {
? ? ? ? ? ? return _db.ListRightPush(redisKey, redisValue);
? ? ? ? }

? ? ? ? ///


? ? ? ? /// 在列表頭部插入值。如果鍵不存在,先創(chuàng)建再插入值
? ? ? ? ///

? ? ? ? ///
? ? ? ? ///
? ? ? ? ///
? ? ? ? public long ListLeftPush(string redisKey, string redisValue)
? ? ? ? {
? ? ? ? ? ? return _db.ListLeftPush(redisKey, redisValue);
? ? ? ? }

? ? ? ? ///


? ? ? ? /// 返回列表上該鍵的長(zhǎng)度,如果不存在,返回 0
? ? ? ? ///

? ? ? ? ///
? ? ? ? ///
? ? ? ? public long ListLength(string redisKey)
? ? ? ? {
? ? ? ? ? ? return _db.ListLength(redisKey);
? ? ? ? }

? ? ? ? ///


? ? ? ? /// 返回在該列表上鍵所對(duì)應(yīng)的元素
? ? ? ? ///

? ? ? ? ///
? ? ? ? ///
? ? ? ? public IEnumerable ListRange(string redisKey)
? ? ? ? {
? ? ? ? ? ? return _db.ListRange(redisKey);
? ? ? ? }

? ? ? ? ///


? ? ? ? /// 返回在該列表上鍵所對(duì)應(yīng)的元素
? ? ? ? ///

? ? ? ? /// 開始行
? ? ? ? /// 結(jié)束行
? ? ? ? ///
? ? ? ? public IEnumerable ListRange(string redisKey, int startRow, int endRow)
? ? ? ? {
? ? ? ? ? ? return _db.ListRange(redisKey, startRow, endRow);
? ? ? ? }

? ? ? ? ///


? ? ? ? /// 移除并返回存儲(chǔ)在該鍵列表的第一個(gè)元素
? ? ? ? ///

? ? ? ? ///
? ? ? ? ///
? ? ? ? public T ListLeftPop(string redisKey)
? ? ? ? {
? ? ? ? ? ? return Deserialize(_db.ListLeftPop(redisKey));
? ? ? ? }

? ? ? ? ///


? ? ? ? /// 移除并返回存儲(chǔ)在該鍵列表的最后一個(gè)元素
? ? ? ? ///

? ? ? ? ///
? ? ? ? ///
? ? ? ? public T ListRightPop(string redisKey)
? ? ? ? {
? ? ? ? ? ? return Deserialize(_db.ListRightPop(redisKey));
? ? ? ? }

? ? ? ? ///


? ? ? ? /// 在列表尾部插入值。如果鍵不存在,先創(chuàng)建再插入值
? ? ? ? ///

? ? ? ? ///
? ? ? ? ///
? ? ? ? ///
? ? ? ? public long ListRightPush(string redisKey, T redisValue)
? ? ? ? {
? ? ? ? ? ? return _db.ListRightPush(redisKey, Serialize(redisValue));
? ? ? ? }

? ? ? ? ///


? ? ? ? /// 在列表頭部插入值。如果鍵不存在,先創(chuàng)建再插入值
? ? ? ? ///

? ? ? ? ///
? ? ? ? ///
? ? ? ? ///
? ? ? ? public long ListLeftPush(string redisKey, T redisValue)
? ? ? ? {
? ? ? ? ? ? return _db.ListLeftPush(redisKey, Serialize(redisValue));
? ? ? ? }

操作SortedSet類型方法封裝

? ? ??? ///


? ? ? ? /// SortedSet 新增
? ? ? ? ///

? ? ? ? ///
? ? ? ? ///
? ? ? ? ///
? ? ? ? ///
? ? ? ? public bool SortedSetAdd(string redisKey, string member, double score)
? ? ? ? {
? ? ? ? ? ? return _db.SortedSetAdd(redisKey, member, score);
? ? ? ? }

? ? ? ? ///


? ? ? ? /// 在有序集合中返回指定范圍的元素,默認(rèn)情況下從低到高。
? ? ? ? ///

? ? ? ? ///
? ? ? ? ///
? ? ? ? public IEnumerable SortedSetRangeByRank(string redisKey)
? ? ? ? {
? ? ? ? ? ? return _db.SortedSetRangeByRank(redisKey);
? ? ? ? }

? ? ? ? ///


? ? ? ? /// 返回有序集合的元素個(gè)數(shù)
? ? ? ? ///

? ? ? ? ///
? ? ? ? ///
? ? ? ? public long SortedSetLength(string redisKey)
? ? ? ? {
? ? ? ? ? ? return _db.SortedSetLength(redisKey);
? ? ? ? }

? ? ? ? ///


? ? ? ? /// 返回有序集合的元素個(gè)數(shù)
? ? ? ? ///

? ? ? ? ///
? ? ? ? ///
? ? ? ? ///
? ? ? ? public bool SortedSetLength(string redisKey, string memebr)
? ? ? ? {
? ? ? ? ? ? return _db.SortedSetRemove(redisKey, memebr);
? ? ? ? }

? ? ? ? ///


? ? ? ? /// SortedSet 新增
? ? ? ? ///

? ? ? ? ///
? ? ? ? ///
? ? ? ? ///
? ? ? ? ///
? ? ? ? public bool SortedSetAdd(string redisKey, T member, double score)
? ? ? ? {
? ? ? ? ? ? var json = Serialize(member);

? ? ? ? ? ? return _db.SortedSetAdd(redisKey, json, score);
? ? ? ? }

? ? ? ? #region SortedSet-Async

? ? ? ? ///


? ? ? ? /// SortedSet 新增
? ? ? ? ///

? ? ? ? ///
? ? ? ? ///
? ? ? ? ///
? ? ? ? ///
? ? ? ? public async Task SortedSetAddAsync(string redisKey, string member, double score)
? ? ? ? {
? ? ? ? ? ? return await _db.SortedSetAddAsync(redisKey, member, score);
? ? ? ? }

? ? ? ? ///


? ? ? ? /// 在有序集合中返回指定范圍的元素,默認(rèn)情況下從低到高。
? ? ? ? ///

? ? ? ? ///
? ? ? ? ///
? ? ? ? public async Task> SortedSetRangeByRankAsync(string redisKey)
? ? ? ? {
? ? ? ? ? ? return await _db.SortedSetRangeByRankAsync(redisKey);
? ? ? ? }

? ? ? ? ///


? ? ? ? /// 返回有序集合的元素個(gè)數(shù)
? ? ? ? ///

? ? ? ? ///
? ? ? ? ///
? ? ? ? public async Task SortedSetLengthAsync(string redisKey)
? ? ? ? {
? ? ? ? ? ? return await _db.SortedSetLengthAsync(redisKey);
? ? ? ? }

? ? ? ? ///


? ? ? ? /// 返回有序集合的元素個(gè)數(shù)
? ? ? ? ///

? ? ? ? ///
? ? ? ? ///
? ? ? ? ///
? ? ? ? public async Task SortedSetRemoveAsync(string redisKey, string memebr)
? ? ? ? {
? ? ? ? ? ? return await _db.SortedSetRemoveAsync(redisKey, memebr);
? ? ? ? }

? ? ? ? ///


? ? ? ? /// SortedSet 新增
? ? ? ? ///

? ? ? ? ///
? ? ? ? ///
? ? ? ? ///
? ? ? ? ///
? ? ? ? public async Task SortedSetAddAsync(string redisKey, T member, double score)
? ? ? ? {
? ? ? ? ? ? var json = Serialize(member);

? ? ? ? ? ? return await _db.SortedSetAddAsync(redisKey, json, score);
? ? ? ? }

操作key類型方法封裝

? ??? ? ///


? ? ? ? /// 移除指定 Key
? ? ? ? ///

? ? ? ? ///
? ? ? ? ///
? ? ? ? public bool KeyDelete(string redisKey)
? ? ? ? {
? ? ? ? ? ? return _db.KeyDelete(redisKey);
? ? ? ? }

? ? ? ? ///


? ? ? ? /// 移除指定 Key
? ? ? ? ///

? ? ? ? ///
? ? ? ? ///
? ? ? ? public long KeyDelete(IEnumerable redisKeys)
? ? ? ? {
? ? ? ? ? ? var keys = redisKeys.Select(x => (RedisKey)x);
? ? ? ? ? ? return _db.KeyDelete(keys.ToArray());
? ? ? ? }

? ? ? ? ///


? ? ? ? /// 校驗(yàn) Key 是否存在
? ? ? ? ///

? ? ? ? ///
? ? ? ? ///
? ? ? ? public bool KeyExists(string redisKey)
? ? ? ? {
? ? ? ? ? ? return _db.KeyExists(redisKey);
? ? ? ? }

? ? ? ? ///


? ? ? ? /// 重命名 Key
? ? ? ? ///

? ? ? ? ///
? ? ? ? ///
? ? ? ? ///
? ? ? ? public bool KeyRename(string redisKey, string redisNewKey)
? ? ? ? {
? ? ? ? ? ? return _db.KeyRename(redisKey, redisNewKey);
? ? ? ? }

? ? ? ? ///


? ? ? ? /// 設(shè)置 Key 的時(shí)間
? ? ? ? ///

? ? ? ? ///
? ? ? ? ///
? ? ? ? ///
? ? ? ? public bool KeyExpire(string redisKey, TimeSpan? expiry)
? ? ? ? {
? ? ? ? ? ? return _db.KeyExpire(redisKey, expiry);
? ? ? ? }

? ? ? ? #region key-async

? ? ? ? ///


? ? ? ? /// 移除指定 Key
? ? ? ? ///

? ? ? ? ///
? ? ? ? ///
? ? ? ? public async Task KeyDeleteAsync(string redisKey)
? ? ? ? {
? ? ? ? ? ? return await _db.KeyDeleteAsync(redisKey);
? ? ? ? }

? ? ? ? ///


? ? ? ? /// 移除指定 Key
? ? ? ? ///

? ? ? ? ///
? ? ? ? ///
? ? ? ? public async Task KeyDeleteAsync(IEnumerable redisKeys)
? ? ? ? {
? ? ? ? ? ? var keys = redisKeys.Select(x => (RedisKey)x);
? ? ? ? ? ? return await _db.KeyDeleteAsync(keys.ToArray());
? ? ? ? }

? ? ? ? ///


? ? ? ? /// 校驗(yàn) Key 是否存在
? ? ? ? ///

? ? ? ? ///
? ? ? ? ///
? ? ? ? public async Task KeyExistsAsync(string redisKey)
? ? ? ? {
? ? ? ? ? ? return await _db.KeyExistsAsync(redisKey);
? ? ? ? }

? ? ? ? ///


? ? ? ? /// 重命名 Key
? ? ? ? ///

? ? ? ? ///
? ? ? ? ///
? ? ? ? ///
? ? ? ? public async Task KeyRenameAsync(string redisKey, string redisNewKey)
? ? ? ? {
? ? ? ? ? ? return await _db.KeyRenameAsync(redisKey, redisNewKey);
? ? ? ? }

? ? ? ? ///


? ? ? ? /// 設(shè)置 Key 的時(shí)間
? ? ? ? ///

? ? ? ? ///
? ? ? ? ///
? ? ? ? ///
? ? ? ? public async Task KeyExpireAsync(string redisKey, TimeSpan? expiry)
? ? ? ? {
? ? ? ? ? ? return await _db.KeyExpireAsync(redisKey, expiry);
? ? ? ? }

發(fā)布訂閱方法封裝

? ??? ? ///


? ? ? ? /// 訂閱
? ? ? ? ///

? ? ? ? ///
? ? ? ? ///
? ? ? ? public void Subscribe(RedisChannel channel, Action handle)
? ? ? ? {
? ? ? ? ? ? var sub = ConnMultiplexer.GetSubscriber();
? ? ? ? ? ? sub.Subscribe(channel, handle);
? ? ? ? }

? ? ? ? ///


? ? ? ? /// 發(fā)布
? ? ? ? ///

? ? ? ? ///
? ? ? ? ///
? ? ? ? ///
? ? ? ? public long Publish(RedisChannel channel, RedisValue message)
? ? ? ? {
? ? ? ? ? ? var sub = ConnMultiplexer.GetSubscriber();
? ? ? ? ? ? return sub.Publish(channel, message);
? ? ? ? }

? ? ? ? ///


? ? ? ? /// 發(fā)布(使用序列化)
? ? ? ? ///

? ? ? ? ///
? ? ? ? ///
? ? ? ? ///
? ? ? ? ///
? ? ? ? public long Publish(RedisChannel channel, T message)
? ? ? ? {
? ? ? ? ? ? var sub = ConnMultiplexer.GetSubscriber();
? ? ? ? ? ? return sub.Publish(channel, Serialize(message));
? ? ? ? }

? ? ? ? #region 發(fā)布訂閱-async

? ? ? ? ///


? ? ? ? /// 訂閱
? ? ? ? ///

? ? ? ? ///
? ? ? ? ///
? ? ? ? public async Task SubscribeAsync(RedisChannel channel, Action handle)
? ? ? ? {
? ? ? ? ? ? var sub = ConnMultiplexer.GetSubscriber();
? ? ? ? ? ? await sub.SubscribeAsync(channel, handle);
? ? ? ? }

? ? ? ? ///


? ? ? ? /// 發(fā)布
? ? ? ? ///

? ? ? ? ///
? ? ? ? ///
? ? ? ? ///
? ? ? ? public async Task PublishAsync(RedisChannel channel, RedisValue message)
? ? ? ? {
? ? ? ? ? ? var sub = ConnMultiplexer.GetSubscriber();
? ? ? ? ? ? return await sub.PublishAsync(channel, message);
? ? ? ? }

? ? ? ? ///


? ? ? ? /// 發(fā)布(使用序列化)
? ? ? ? ///

? ? ? ? ///
? ? ? ? ///
? ? ? ? ///
? ? ? ? ///
? ? ? ? public async Task PublishAsync(RedisChannel channel, T message)
? ? ? ? {
? ? ? ? ? ? var sub = ConnMultiplexer.GetSubscriber();
? ? ? ? ? ? return await sub.PublishAsync(channel, Serialize(message));
? ? ? ? }

事件方法封裝

? ??? ? ///


? ? ? ? /// 添加注冊(cè)事件
? ? ? ? ///

? ? ? ? private static void AddRegisterEvent()
? ? ? ? {
? ? ? ? ? ? ConnMultiplexer.ConnectionRestored += ConnMultiplexer_ConnectionRestored;
? ? ? ? ? ? ConnMultiplexer.ConnectionFailed += ConnMultiplexer_ConnectionFailed;
? ? ? ? ? ? ConnMultiplexer.ErrorMessage += ConnMultiplexer_ErrorMessage;
? ? ? ? ? ? ConnMultiplexer.ConfigurationChanged += ConnMultiplexer_ConfigurationChanged;
? ? ? ? ? ? ConnMultiplexer.HashSlotMoved += ConnMultiplexer_HashSlotMoved;
? ? ? ? ? ? ConnMultiplexer.InternalError += ConnMultiplexer_InternalError;
? ? ? ? ? ? ConnMultiplexer.ConfigurationChangedBroadcast += ConnMultiplexer_ConfigurationChangedBroadcast;
? ? ? ? }

? ? ? ? ///


? ? ? ? /// 重新配置廣播時(shí)(通常意味著主從同步更改)
? ? ? ? ///

? ? ? ? ///
? ? ? ? ///
? ? ? ? private static void ConnMultiplexer_ConfigurationChangedBroadcast(object sender, EndPointEventArgs e)
? ? ? ? {
? ? ? ? ? ? Console.WriteLine($"{nameof(ConnMultiplexer_ConfigurationChangedBroadcast)}: {e.EndPoint}");
? ? ? ? }

? ? ? ? ///


? ? ? ? /// 發(fā)生內(nèi)部錯(cuò)誤時(shí)(主要用于調(diào)試)
? ? ? ? ///

? ? ? ? ///
? ? ? ? ///
? ? ? ? private static void ConnMultiplexer_InternalError(object sender, InternalErrorEventArgs e)
? ? ? ? {
? ? ? ? ? ? Console.WriteLine($"{nameof(ConnMultiplexer_InternalError)}: {e.Exception}");
? ? ? ? }

? ? ? ? ///


? ? ? ? /// 更改集群時(shí)
? ? ? ? ///

? ? ? ? ///
? ? ? ? ///
? ? ? ? private static void ConnMultiplexer_HashSlotMoved(object sender, HashSlotMovedEventArgs e)
? ? ? ? {
? ? ? ? ? ? Console.WriteLine(
? ? ? ? ? ? ? ? $"{nameof(ConnMultiplexer_HashSlotMoved)}: {nameof(e.OldEndPoint)}-{e.OldEndPoint} To {nameof(e.NewEndPoint)}-{e.NewEndPoint}, ");
? ? ? ? }

? ? ? ? ///


? ? ? ? /// 配置更改時(shí)
? ? ? ? ///

? ? ? ? ///
? ? ? ? ///
? ? ? ? private static void ConnMultiplexer_ConfigurationChanged(object sender, EndPointEventArgs e)
? ? ? ? {
? ? ? ? ? ? Console.WriteLine($"{nameof(ConnMultiplexer_ConfigurationChanged)}: {e.EndPoint}");
? ? ? ? }

? ? ? ? ///


? ? ? ? /// 發(fā)生錯(cuò)誤時(shí)
? ? ? ? ///

? ? ? ? ///
? ? ? ? ///
? ? ? ? private static void ConnMultiplexer_ErrorMessage(object sender, RedisErrorEventArgs e)
? ? ? ? {
? ? ? ? ? ? Console.WriteLine($"{nameof(ConnMultiplexer_ErrorMessage)}: {e.Message}");
? ? ? ? }

? ? ? ? ///


? ? ? ? /// 物理連接失敗時(shí)
? ? ? ? ///

? ? ? ? ///
? ? ? ? ///
? ? ? ? private static void ConnMultiplexer_ConnectionFailed(object sender, ConnectionFailedEventArgs e)
? ? ? ? {
? ? ? ? ? ? Console.WriteLine($"{nameof(ConnMultiplexer_ConnectionFailed)}: {e.Exception}");
? ? ? ? }

? ? ? ? ///


? ? ? ? /// 建立物理連接時(shí)
? ? ? ? ///

? ? ? ? ///
? ? ? ? ///
? ? ? ? private static void ConnMultiplexer_ConnectionRestored(object sender, ConnectionFailedEventArgs e)
? ? ? ? {
? ? ? ? ? ? Console.WriteLine($"{nameof(ConnMultiplexer_ConnectionRestored)}: {e.Exception}");
? ? ? ? }

十一

序列化方法封裝

? ??? ? ///


? ? ? ? /// 序列化
? ? ? ? ///

? ? ? ? ///
? ? ? ? ///
? ? ? ? private static byte[] Serialize(object obj)
? ? ? ? {
? ? ? ? ? ? if (obj == null)
? ? ? ? ? ? ? ? return null;

? ? ? ? ? ? var binaryFormatter = new BinaryFormatter();
? ? ? ? ? ? using (var memoryStream = new MemoryStream())
? ? ? ? ? ? {
? ? ? ? ? ? ? ? binaryFormatter.Serialize(memoryStream, obj);
? ? ? ? ? ? ? ? var data = memoryStream.ToArray();
? ? ? ? ? ? ? ? return data;
? ? ? ? ? ? }
? ? ? ? }

? ? ? ? ///


? ? ? ? /// 反序列化
? ? ? ? ///

? ? ? ? ///
? ? ? ? ///
? ? ? ? ///
? ? ? ? private static T Deserialize(byte[] data)
? ? ? ? {
? ? ? ? ? ? if (data == null)
? ? ? ? ? ? ? ? return default(T);

? ? ? ? ? ? var binaryFormatter = new BinaryFormatter();
? ? ? ? ? ? using (var memoryStream = new MemoryStream(data))
? ? ? ? ? ? {
? ? ? ? ? ? ? ? var result = (T)binaryFormatter.Deserialize(memoryStream);
? ? ? ? ? ? ? ? return result;
? ? ? ? ? ? }
? ? ? ? }

十二

調(diào)用Redis方法

RedisBaseTools redis = new RedisBaseTools();
redis.StringSet("keyname", "1234567", new TimeSpan(0, 10, 0));
redis.StringGet("keyname");

其他類型方法調(diào)用方式相似


END


瀏覽 70
點(diǎn)贊
評(píng)論
收藏
分享

手機(jī)掃一掃分享

分享
舉報(bào)
評(píng)論
圖片
表情
推薦
點(diǎn)贊
評(píng)論
收藏
分享

手機(jī)掃一掃分享

分享
舉報(bào)

感谢您访问我们的网站,您可能还对以下资源感兴趣:

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 欧美日韩国产成人在线| 国产欧美一区二区三区视频| 国产免费黄色电影| 69国产精品| 中文资源在线a中文| 国产精品同| 国内精品人妻无码久久久影院蜜桃| 日本乱伦电影中文字幕| 欧美精品性爱| A级成人网站| 99色色网| 国产秘精品一区二区三区免费| 一色综合| 强伦人妻一区二区三区视频| 加勒比久久88| 大香蕉视频国产| 亚洲国产熟妇综合色专区| 免费在线观看黄色视频网站| 久久草在线| www.一区二区| 日本狠狠操| 国产乱子伦一区二区三区在线观看| 91精品人妻一区二区三区四区| 婷婷视频导航| 天天日夜夜撸| 久久久久久久久久免费视频| 日韩人妻无码一区二区三区中文| 久久精品欧美| 欧一美一婬一伦一区二区三区自慰 | 能看的黄色视频| 久操综合视频在线| 欧美,日韩,日| 在线观看亚洲视频| 成人A片一级| 波多野结衣在线无码| 欧美成人网站在线| 婷婷精品在线| 黄页网址在线观看| 国产91精品久久久天天| 99福利| 大香蕉9999| 黄片网址大全| 久久久久久久9999| 国产亚洲精品久久久波多野结衣 | 一本色道无码人妻精品| 熟妇操逼视频| 色吊妞| 亚洲美女视频在线| 丁香五月天在线播放| 日本欧美在线观看高清| 68久久久| 欧美成人午夜无码A片秀色直播| 欧美在线不卡| 日韩欧美高清视频| 免费国产黄色| 国产久久久久久| 日韩一级特黄A片免费观| 五月婷婷深深爱| 可以免费看的av| 国产精品18禁| 大香蕉久热| av天堂中文在线| 婷婷无码在线| 99无码人妻| 国产欧美日韩一区二区三区| 裸体美女视频欧美18| 91人妻人人澡人人爽精品| 亚洲操逼电影| 欧美国产乱伦| 91熟女乱伦| 男女无套在线观看免费| 国产又爽又黄免费| 天堂网AV在线| 日本中文字幕不卡| 亚洲第一黄片| 成人黄色视频免费| 蜜芽AV在线| 欧美性受XXXX黑人XYX性爽冫| 黄色操逼| 亚洲精品999| 久久噜| 91免费高清视频| 夜夜夜撸| 亚洲AV无码免费| 亚洲AV动漫| 欧美精品久久久久| 亚洲午夜久久久| 欧美又粗又大AAA片| eeuss国产| 欧美高清无码视频| 国产福利免费| 日本爽妇网| 黄色视频网站国产| 国产激情福利| 国产无码成人免费| 欧美日韩免费看| 69av在线播放| 亚洲av免费| 69无码| 91在线免费视频| 女人卖婬视频播放| 色丁香视频在线观看的| 波多野结衣av在线观看窜天猴| 国产精品久久久久久久久久二区三区 | 中文熟妇| 亚洲先锋影音| 日韩成人观看| 国产日韩欧美一区| 国产精品成人99一区无码| 黄色美女网站| 日韩免费高清无码| 日韩三级小说| 日韩综合| 天天添夜夜添| 色婷婷五月激情| 嘿嘿av| 亚洲AV无码成人片在线| 蜜桃传媒一区二区亚洲A| 亚洲天堂在线看| 欧美久久性爱| 日韩在线中文字幕视频| 欧美精品无码| 亚洲AV成人无码| 国产又粗又大又爽91嫩草| 久久人妻免费视频| 国产一级电影网站| a片网站在线观看| 青青草娱乐视频| 激情五月婷婷网| 成人丁香五月天| 欧日韩在线| 先锋影音中文字幕| 亚洲天堂无码在线观看| 中文字幕免费高清| 色天堂视频在线观看| 无码中文综合成熟精品AV电影 | 在线视频99| 免费看黄A级毛片成人片| 日本黄网站| 国产精品视频免费观看| 91人妻一区二区三区无不码超满 | 无码一区二区三区四| 国产亲子乱A片免费视频| 日韩图片区小说视频区日| 91综合在线观看| 人人天天爽| 婷婷三级片| 青青草无码| 免费观看黄色视频| 婷婷好色五月天| 亚洲国产另类无码| 欧美嗯啊| 国产91白丝在一线播放| 高颜值呻吟给力| 国产精品99久久免费黑人人妻| 美女被操网站免费| 一插综合网| 影音先锋日韩资源| 日韩高清国产一区在线| 青春草在线免费观看| 翔田千里无码AV在线观看| 成人精品电影| 中文字幕一区二区三区四区50岁 | 在线视频免费观看| 五月天婷婷色| 天堂vs亚洲| 国产亚洲无码激情| 黄网免费观看| 成人一级电影| 国产精品久久久久久久免牛肉蒲| 一卡二卡三卡无码| 久久久精品午夜人成欧洲亚洲韩国| 久久久久久久免费视频| 日韩无码网站| 欧美国产另类| 2019人人操| 欧美视频中文字幕| 亚洲免费在线| 欧美日韩免费观看视频| 91久久成人| 黄色国产av| 中文字幕激情精品| 日韩一区二区视频在线观看| 亚洲视频网站在线观看| 久久久久大香蕉| 欧美人妻视频在线| 国产成人无码精免费视频| 成年人在线观看视频网站| 国产在线黄片| 伊人春色AV| 国产精品一区二区免费| 在线看片A| 婷婷五月天AV| 无套内射免费视频| 大香蕉网伊人在线| 欧美黑吊大战白妞欧美大片| 国产AV18岁| 精品国精品自拍自在线| 国产办公室丝袜人妖| AV无码高清| 99亚洲无码| 99re国产视频| 欧美日韩在线免费| 亚洲精品欧美久久婷婷| 超碰青青青| 日本二区三区| 91精品婷婷国产综合久久韩漫| 日本精品视频在线| 无码在线观看免费视频| 美女黄色免费网站| 午夜精品秘一区二区三区| 亚州一级二级| 免费无码一级A片大黄在线观看| AV一级片| 欧美性爱XXXX| 黃色一級片黃色一級片尖叫声-百度-百 | 国产成人AV一区二区三区在线观看| 大黑人荫蒂BBBBBBBBB| 91白浆| 欧美黄网站在线观看| 一本道视频在线| 日韩一区二区视频| 五月丁香成人电影| www.婷婷六月天| 中文字幕一区二区三区四区| 91偷拍与自偷拍精品无码| AV网站在线免费观看| 欧美A片在线观看| 亚洲天堂在线观看视频网站| 91av免费在线观看| 中文字幕在线免费观看视频| 蜜桃无码一区| 国产亚洲久一区二区三区| 狠狠色婷婷7777| 青青精品| 香蕉国产2023| 亚洲精品区| 97超碰自拍| 日韩一卡二卡| 丁香婷婷色五月激情综合三级三级片欧美日韩国 | 亚洲色图p| 超碰天堂| 成人无码区免费AV片| 51一区二区三区| ThePorn-成人网站入口| 欧美亚韩一区二区三区| 午夜无码久久| 福利精品| 正在播放吴梦梦淫行| 日韩欧美成人片| 欧美视频精品| 超碰毛片| 一起草在线视频| 99国产精品| 五月丁香激情在线| 美女啪啪视频| 大香蕉第一页| 内射免费网站| 日日干干| 性爱免费视频网站| 国产一级a毛一级做a爱| 中文字幕高清视频| 成人小说一区二区三区| 详情:绿帽夫妻多人运动开淫啪-91n| 青青草性爱| 日韩五码| 亚洲网站在线免费观看| 丁香五月婷婷六月| 激情无码网站| 中文在线观看免费视频| AA片在线观看视频在线播放| 免费视频亚洲| 国产精品成人午夜福利| 北条麻妃九九九精品视频免费观看| 777视频在线观看| 高清色色女网站| 麻豆视频一区二区三区| 东京热精品视频| 日本草逼网| 蜜桃av在线播放| 国产免看一级a一片成人aⅴ| 免费看黄色一级片| 国产欧美精品成人在线观看| 亚洲黄色免费看| 国产午夜无码福利视频| 日韩无码A| 天堂网| 成人亚洲精品一区二区三区| 亚洲精品久久久久久久久豆丁网| 国产激情免费| AV2014天堂网| 青娱乐AV| 国产毛片一区| 玖玖在线视频| 黄色成人免费视频| 五月丁香六月婷| 手机av网站| 欧美日韩国产一区二区| 免费无码婬片AAAAA片| 天天天天天天操| av天天av无码av天天爽| 日日拍夜夜拍| 国产小视频免费在线观看| 黄色免费看| 男人av网站| 综合网欧美| 亚洲高清无码视频| 久久婷婷国产麻豆91天堂| 女毛片| 激情五月婷婷综合| 嫩BBB槡BBBB槡BBB| 操逼视频高清无码| 国产免费一区二区在线A片视频| 国产精品99精品| 久久人妻熟女中文字幕av蜜芽| 中文字幕免费av| 亚洲有码在线观看| 黄色视频网站观看| 国产丨熟女丨国产熟女视频| 成人A片免费在线观看| 爱射综合| 黄色视频在线观看| 最近最好的2019中文| 高潮喷水无码| 丰满欧美熟妇免费视频| 99在线精品观看| 麻豆免费成人传媒| 黄片网站免费在线观看| 大香蕉在线电影| 深夜福利一区二区| 亚洲午夜AV久久乱码| 另类性爱视频| 国产成人久久| 亚洲成人无码精品| 久草福利视频| 国产日逼网站| 久草视频在线资源| 日批视频在线观看| 日韩欧美中文在线观看| 91精品久久久久久粉嫩| 天天日综合网| 亚洲第一页在线观看| 人人操人人看人人| 特级西西WWW888| 18成人网站在线观看| 日韩人妻无码专区| 日本亚洲中文字幕| 蜜桃传媒一区二区| 久久一区二区三区四区五区| 无码成人视频| 91人妻人人澡人人爽人人精品乱| 国产人妻人伦精品1国产丝袜 | 午夜成人无码| 内射视频免费看| 日韩免费高清无码| 中文字幕无码观看| 97人人艹| 亚洲一区欧美| 日韩无码高清免费视频| 免费看黄片的网站| 日日干网| 大香蕉操逼视频| 五月丁香电影| 亚洲熟女一区二区三区妖精| 婷婷夜色福利网| 欧美性爱动态| 17c精品麻豆一区二区免费 | 丁香婷婷五月色成人网站| 大香蕉伊人导航| 91在线视频精品| 风间由美大荫蒂无码AV| 午夜免费福利| 91av久久| 性满足BBwBBWBBw| 黑人大香蕉| 激情无码在线观看| 肏屄视频在线观看| jzzijzzij亚洲成熟少妇在线播放| 国产免费操逼| 亚洲清高毛无码毛片| 黄片网站在线免费观看| 黄片av| 日韩免费中文字幕| 国产免费高清无码| 人人妻人人| 极品少妇久久久| 精品国产va久久久久久| 一区二区成人电影| 午夜视频18| 欧美日韩成人电影| 欧美日韩中文在线| 国产又黄又大又粗| AV无码网站| 自拍偷拍激情视频| 中文字幕高清免费看| 翔田千里无码在线| 国产综合无码| 亚洲一级黄色片| 婷色| 国产伦精品一区二区三区妓女下载 | 日韩高清无码观看| 国产中文字幕亚洲综合欧美| 天天视频黄色| 成人欧美一区二区三区在线观看| 欧美大香蕉视频| 一区二区三区四区五区无码| 欧美一级特黄AAAAAA片在线视频| 精品91海角乱| 欧美成人中文字幕在线| 五月婷婷色欲| av三级片在线观看| 青青草大香蕉伊人| 思思热思思操免费视频| H片在线播放| 国产成人黄色电影| 九九热无码| 亚洲无码A片在线观看| 欧美日韩亚洲成人| 亚洲北条麻妃一级A片| 日皮视频免费| 俺来也av| 激情A| 欧一美一婬一伦一区二区三区自慰 | 久久精品v| 翔田千里无码XXXXXX| 国产av网站大全| 精品乱子伦一区二区三区下载| 伊人久久影院| 色婷婷中文| 91成人免费在线观看| www.俺去也| 大地99中文在线观看| 天天日天天噜| 久操视频在线| 豆花视频logo进入官网| 黄色免费无码| 操b视频免费看| 中文国产| 久久国产精品一区二区三区 | 国产美女一级真毛片酒店| 黄色一级片在线看| 国产精品免费在线| 欧美A在线| 欧美日黄| 色老板在线视频| 九色PORNY自拍视频| 免费看黄色的视频| 成人免费无码激情AV片| 影音先锋久久| 国产精品无码天天爽视频| 午夜偷拍视频| 欧美黄片免费视频| www.干| 999国产视频| av手机天堂网| www天天操| www.五月婷婷| 国产乱伦内射| xxxxx无码| 亚洲精品中文字幕在线| 高清无码在线观看18| 51妺嘿嘿午夜福利在线| 国产suv精品一区二区6精华液| 操B网站| 久久久久亚洲AV成人网人人软件| 在线看片av| 综合激情av| 欧美一级A片高清免费播放| www.日韩欧美| 大香蕉国产在线视频| 国产在线观看mv免费全集电视剧大全| 中文字幕成人在线| 丁香五月激情小说| 特黄色视频| 日本v片| 成人黄色在线| 亚洲精品一区二区三区在线观看| 欧美伊人在线| 欧美色图自拍| 日本成人中文字幕在线观看| 一级电影网站| 无码影音| 国产一级片免费| 成人亚洲精品一区二区三区| 91视频导航| 欧一美一婬一伦一区二区三区黑人| 亚洲电影在线| 波多野吉衣中文字幕| 亚洲无码久久飞鱼网站| 欧美日韩国产一区| 777无码| 国产毛片久久久久久久| 欧美三级欧美一级| youjizzcom日本| 成人无码区免费AV毛片| 91人妻人人澡人人澡人人精品| 久草免费福利| 先锋资源男人站| 天堂A片电影网站在线观看| 久久久久三级片| 超碰久操| 免费性爱网站| 黄色视频A片| 98在线++传媒麻豆的视频| 五月天中文字幕| 亚洲制服在线观看| 在线观看内射视频| 伊人大香焦网| 伊人久久大香色综合久久| 爱爱打炮影院| 亚洲va国产天堂va久久en| 午夜福利91| 翔田千里中文字幕无码| 欧美日韩综合| 蜜臀AV一区二区三区免费看| 亚洲国产一区二区三区| 一本色道久久综合亚洲精品小说| 人人摸人人操人人射| 日韩无码视频一区二区| 亚洲成人人妻| 黄频免费观看| 视频一区中文字幕| 国产精品观看| 九九福利| 久热9| 能看毛片的网站| 亚洲精品乱码久久久久久蜜桃欧美| 久久精品一区二区三区四区五区| 国产精品国产成人国产三级| 91资源超碰| 人妻熟女在线| 操屄在线视频| 色色色免费视频| 日韩无码人妻一区二区三区| 成人精品一区二区三区| 上床网站| 91成人在线免费视频| 欧美日韩国产激情| 91精品久久久久久久久久久久| 日韩三级麻豆| 成人无码视频在线| 国内夫妻【20p】| 无码免费在线视频| 美日韩中文字幕| 亚洲成人五月天| 欧美日韩亚洲天堂| 日韩一级片在线| 欧美va视频| 91麻豆精品国产91久久久久久久久 | 欧美一级性爱在线观看| 丰满少妇一级片| 伊人婷婷色香综合| 亚洲一区二区成人网站戴套| 亚洲自拍偷拍视频| av黄色在线| 欧美日韩国产中文字幕| 北京熟妇搡BBBB搡BBBB| 免费一级AAAAA片在线播放| 一级a一级a爰片免费免免中国A片| 亚洲va欧美va天堂v国产综合| 美妇肥臀一区二区三区-久久99精品国 | 天天草网| 亚洲九九在线| 中文字幕日韩无码电影| 久久6| 97无码精品人妻| 黄片视频网站| 亚洲人在线| 99国产精品99久久久久久粉嫩 | 国产免费观看AV| 日本性爱网址| 欧美亚洲成人网站| 一区二区操逼| 人人操人人| 成人精品鲁一鲁一区二区| 午夜视频福利| 人人摸人人操人人| 伊人999| 日本在线精品视频| 中文字幕一二三区| 久久精品视频9| 黄色a片视频| 五月丁香六月激情综合| 99爱在线| av手机天堂网| 337P大胆粉嫩银噜噜噜| 四川少妇bbbb| 国产精品女人精品久久久天天| 特级毛片在线观看| 韩国精精品视频| 色交视频| 人妻大香蕉| 亚洲综合小说| 神马午夜51| 久久伊| 一个色综合网| 久久精品视频免费观看| 韩日精品视频| 天天色色综合| 丁香五月影院| 亚洲视频中文字幕在线观看| 一区视频在线| 国产精品欧美一区二区三区苍井空 | 成年免费视频| 69成人天堂无码免费| 69Av视频| 激情操逼视频| 午夜福利视频3000| 又黄又色的视频| 日本欧美一区二区三区| 污视频网站免费在线观看| 毛片无遮挡| 国产精品美女久久久久久久久| 最新中文字幕AV| 91一级A片在线观看| 成人一区二区电影| 豆花视频一区| 久久亚洲AV无码午夜麻豆 | AV怡红院| 精品无码人妻一区二区媚黑| 日日操日日摸| 91成人视频在线免费观看| 国产三级麻豆| 影音先锋国产av| 男人天堂婷婷| 免费在线观看无码视频| 中文字幕在线观看日本| 亚洲免费观看高清完整版在va线观看 | 青草伊人网| 欧美一二三区黄色免费视屏| 特黄AAAAAAAA片视频| 一级色色片| 人妻性爱| 成人免费毛片果冻日本| 中文字幕亚洲日韩| 麻豆国产精品一区| 国产91精品看黄网站在线观看| 黄色AV免费| 搡bbb| 中文字幕不卡在线| 国产伊人久久| 亚洲中文无码在线观看| 操人| 求毛片网址| 华女与黑人91A∨| 五月丁香成人网| 四虎黄色网| 青青草操逼视频| 欧美一二三区| 亚洲日韩久久| 久久久999| 99国产在线观看| 人人妻人人摸| 亚洲激情在线| 午夜操日在线| 免费一级无码婬片A片AAA毛片 | 欧美视频第一页| 做爰视频毛片蜜桃| A片视频免费观看| 欧美激情爱爱| 国产伦精一品二品三品app| 色天使AV| 中文字幕在线无码观看| 高清免费在线中文Av| 天堂中文资源在线观看| 无码免费观看| 中文字幕综合网| 少妇在线观看| 五月丁香免费视频| 欧美在线视频免费观看| 色午夜| 国产日皮视频| 在线视频第一页| 国产视频久久久| 18禁免费网站| 婷婷在线视频| 五月丁香综合久久| 亚洲AV无码一区二区三区少妇| 怡春院日韩| 中文字幕一区三区人妻视频| 超碰午夜| 国产a片免费观看| 资源av| 国产老骚逼| 日本欧美在线播放中文| www.婷婷六月天| 亚洲中文字幕影院| 中文不卡视频| 最近中文字幕免费| 欧美日韩成人在线| 一本色道久久综合亚洲精东小说| 成人av小说网站| 国产乱码精品一区二区三区的特点 | 国产亚洲99久久精品| 国产成人精品国内自产拍免费看| 久久视频这里有精品| 青青草在线观看视频| 成人电影综合网| 黄色无遮挡| 深夜福利网| 亚洲人在线| 久久综合中文字幕| 欧美口爆| 无码不卡视频在线观看| 国产精品日韩| 唐嫣一级婬片A片AAA| 日韩第五页| 中文字幕在线一区二区a| 丁香婷婷激情五月| 国产av不卡| 九九热超碰| 91人妻人人爽| 91嫖妓站街按摩店老熟女| 大香蕉97| 欧美亚洲成人精品| 操操操AV| 久久久久无码国产精品一区| 国产avwww| 成人爱爱免费视频| 中文无码一区二区三区| 国产肏逼视频| 在线免费无码| 丁香婷婷色五月激情综合三级三级片欧美日韩国 | 爱搞在线观看| 99欧美| 黄频美女日本免费| 操操插插| 欧洲无码精品| 特级西西人体444www高清大胆 | 日本18禁网站| 国产一区二区做爱| 69av视频在线观看| 能看毛片的网站| 天堂在线观看av| 亚洲一级免费视频| 日韩国产成人| 色哟哟AV| 欧美黄色激情视频网站| 欧美日韩亚洲一区二区三区| 男人的天堂一区| 91人人人人| 91人人看| 玖玖色综合| 亚洲综合激情五月久久| 国产亚洲99久久精品| 亚洲天堂无码av| 91骚| 亚洲AV无码乱码国产精品蜜芽| 91在线视频精品| 在线播放中文字幕| 欧美A一| 天天日天天操天天爽| 色老板最新地址| 国产午夜免费| 亚洲免费三级片| 黑人AV七| 成人做爰黄级A片免费看土方 | 国产7777| www香蕉成人片com| 日韩毛片| 亚洲在线观看网站| 黄片视频观看| 自拍偷拍AV| 狼友视频在线播放| 亚洲免费网站| 日韩无码人妻视频| 波多野结衣天堂| 欧美高清无码在线观看| 激情动态视频| 西西444www大胆高清图片| 色婷婷五月激情| 91视频第一页| 艳妇乳肉豪妇荡乳AV无码福利 | av无码观看| 五月天综合网| 久草大香蕉在线视频| 日韩欧美一区在线| 色网站在线观看| 日本黄色视频免费观看| 欧美日韩视频一区二区三区| 人妻无码精品蜜桃| 日日操日日摸| 91香蕉麻豆| 亚洲av电影在线观看| 日韩aaa视频| 操逼123首页| 可以免费观看的av| 中文无码人妻| 国产換妻4P视频| 懂色AV无码中字幕一区| 无码一级二级| AV三级片在线观看| 成人小说视频在线社区| 亚洲天堂2016| 亚洲无码视频看看| 91久操| 空姐白洁| 午夜资源站| 夜夜撸天天干| 亚洲激情综合网| 东方美美高清无码一区| 黑人无码AV| 欧美国产视频| 国产图区| 大奶一区二区| 美女av网站| 91AV成人| 国产视频中文字幕| 国产免费操逼| 欧美性爱XXXX黑人XYX性爽| 无码成人午夜在线影院| 久久久在线| 大香蕉在线99| 国产精品一区二区在线观看| 91人人人| 狠狠干狠狠操| 亚洲乱码在线| 亚洲字幕在线观看| 日韩一级网站| 婷婷五月999| 91亚洲国产成人久久精品网站| 五月婷亚洲精品AV天堂| 免费看无码网站成人A片| 国产在线色视频| 麻豆传媒一区二区| 久久国产精品网站| 人妻无码中文久久久久专区| 免费涩涩无遮挡18国产| 欧美成人天堂| 欧美一区二区三区婷婷五月| 色婷婷在线视频播放| 亚洲乱码中文字幕| 东方av在线观看| 国产在线观看自拍| 高清无码在线免费观看视频| 日本爱爱小视频| 综合色国产精品欧美在线观看| 黄色三级A片| 久久久久性爱| 亚洲成人在线视频| 日韩V片| 五月天成人网址| 亚洲婷婷五月| 日韩三区在线| 日韩欧美精品18| 91精品福利| 日韩性爱网址| 日韩欧美精品18| 91黄色片| 国产精品毛片VA一区二区三区| 久操网址| 久久人体| 18精品爽视频| 日韩啪啪网站| 三级A片| 国产一级黄色大片| 中文字幕乱码中文字幕电视剧| 日韩三级视频| 手机看片1024你懂的| 欧美成人精品激情在线视频| 国产高清自拍| 国产中文字字幕乱码无限| 91内射视频| 无码免费视频| 无码人妻一区二区三区蜜桃视频| 五月天婷婷基地| 免费成人黄视频| 亚洲天堂婷婷| 俺也干| 97资源网站| 波多野结衣无码在线视频| 黄色小电影网站| 国产婷婷五月| 99视频精品全部免费看| 中文字幕在线观看一区| 内射一区二区三区| 视频一区二区三区在线观看| 高颜值呻吟给力| 亚洲制服中文字幕| 中文不卡视频| 日韩精彩视频| 91精品国产乱码香蕉黄瓜草莓| 欧美三P囗交做爰| 免费的黄色视频网站| 成人网站毛片| 免费一级无码婬片A片AAA毛片| 九一国产在线| 亚洲视频天堂| 大香蕉福利在线| 久久免费视频1| 青青草av| 自拍欧美亚洲| 成人三级无码| 欧美九九九九| 七六十路の高齢熟妇无码| 国产成人视频| 国产AV直播| 亚洲黄色在线视频| 怡春院日韩| 欧美性爱天天操|