Redis的使用工具方法類以及Redis鎖的使用

2021-08-31 16:38:01 字數 2660 閱讀 9086

redis在實際工作的幾種使用方法,其中最吸引筆者的是redis在分布式鎖方面的應用。在第二段**中我會貼出筆者在練習中蘇哦用的**

/**

* 功能描述: redis的幾種常用工具方法,其中redis分布式鎖注意setifabsent方法的使用

* @param:

* @return:

* @auther: rhine

* @date: 2018/11/12 23:42

*/public class redisutil

}/**

* 批量刪除key

* @param pattern

*/public void removepattern(final string pattern)

}/**

* 刪除對應的value

* @param key

*/public void remove(final string key)

}/**

* 判斷快取中是否有對應的value

* @param key

* @return

*/public boolean exists(final string key)

/*** 讀取快取

* @param key

* @return

*/public object get(final string key)

/*** 寫入快取

* @param key

* @param value

* @return

*/public boolean set(final string key,object value)catch (exception e)

return result;

}/**

* 寫入快取

* @param key

* @param value

* @param expiretime

* @return

*/public boolean set(final string key,object value,long expiretime)catch (exception e)

return result;

}/**

* 寫入快取

* 當且僅當key不存在,若給定的key已經存在,則不做任何動作

* @param key

* @param value

* @return

*/public boolean setifabsent(final string key,object value)catch (exception e)

return result;

}/**

* 寫入快取

* 當且僅當key不存在,若給定的key已經存在,則不做任何動作

* @param key

* @param value true:設定成功; false:設定失敗,已經存在

* @param expiretime

* @return

*/public boolean setifabsent(final string key,object value,long expiretime)

}catch (exception e)

return result;

}/**

* 利用指定key作為redis更新鎖(鎖有過期時長)

* @param key

* @param cacheseconds

* @return 獲得鎖則返回true,否則返回false

*/public boolean trylock(string key,long cacheseconds)catch (exception e)

return islock;

}}

下面是redis獲取鎖和刪除鎖的一對操作,因為redis的單執行緒屬性以及setifabsent方法,常用於商品秒殺的場景。用syn註解雖然可以解決同步的問題,但是此操作是每次讓乙個執行緒進入方法,勢必會導致程式的執行的時間過長,不能滿足實際的需求,這裡推薦使用redis分布式鎖。日常使用中,按照先上鎖,執行**,解鎖的步驟執行。

/**

* @author rhine

* @date 2018/11/8 2:37

**/@component

@slf4j

public class redislock

string currentvalue=redistemplate.opsforvalue().get(key);

//如果鎖過期

if (!stringutils.isempty(currentvalue)&&long.parselong(currentvalue)}

return false;

}/**

* 功能描述: 解鎖

* @param: [key, value]

* @return: void

* @auther: rhine

* @date: 2018/11/8 3:03

*/public void unlock(string key,string value)

}catch (exception e)",e);}}

}

Jedis使用工具類

redis 使用工具類 package com.qlwb.business.common.redis import org.apache.log4j.logger import redis.clients.jedis.jedis import redis.clients.jedis.jedispoo...

常用工具類的方法

一 arrayutils常用方法 tostring 將乙個陣列轉換成string,用於列印陣列 isequals 判斷兩個陣列是否相等,採用equalsbuilder進行判斷 tomap 將乙個陣列轉換成map,如果陣列裡是entry則其key與value就是新map的key和value,如果是ob...

Android 工具類 常用工具類(方法)大全

1.獲取手機解析度 獲取手機解析度 public static string getdisplaymetrix context context else constant.screen screen width width constant.screen screen height height r...