redis的簡單使用和介紹(轉載)
Redis 是一個高效能的key-value資料庫。 redis的出現,很大程度補償了memcached這類keyvalue儲存的不足,在部 分場合可以對關聯式資料庫起到很好的補充作用。它提供了Python,Ruby,Erlang,PHP,Java客戶端,使用很方便。
Redis使用單執行緒的IO複用模型,自己封裝了一個簡單的AeEvent事件處理框架,主要實現了epoll、kqueue和select,對於單純只 有IO操作來說,單執行緒可以將速度優勢發揮到最大,但是Redis也提供了一些簡單的計算功能,比如排序、聚合等,對於這些操作,單執行緒模型實際會嚴重影 響整體吞吐量,CPU計算過程中,整個IO排程都是被阻塞住的。
Redis 除了作為儲存之外還提供了一些其它方面的功能,比如聚合計算、pubsub、scripting等,對於此類功能需要了解其實現原理,清楚地瞭解到它的局 限性後,才能正確的使用,比如pubsub功能,這個實際是沒有任何持久化支援的,消費方連線閃斷或重連之間過來的訊息是會全部丟失的,又比如聚合計算和 scripting等功能受Redis單執行緒模型所限,是不可能達到很高的吞吐量的,需要謹慎使用。
本例子Linux採用的centOs5.4
下面來介紹一下redis的安裝
- wget http://redis.googlecode.com/files/redis-2.0.4.tar.gz
- tar zxvf redis-2.0.4.tar.gz
- cd redis-2.0.4
- make
make完後 redis-2.0.4目錄下會出現編譯後的redis服務程式redis-server,還有用於測試的客戶端程式redis-cli
安裝成功
啟動服務
./redis-server
也可以通過啟動引數告訴redis使用指定配置檔案使用下面命令啟動
./redis-server redis.conf
redis.conf是一個預設的配置檔案。我們可以根據需要使用自己的配置檔案。
啟動redis服務程式後,就可以使用測試客戶端程式redis-cli和redis服務互動了
注意啟動的時候,會出現
WARNING overcommit_memory is set to 0!Background save may fail under
low memory condition. To fix this issue add'vm.overcommit_memory = 1' to /etc/sysctl.conf and
[6020] 10 Aug 20:58:21 * The server is nowready to accept connections on port 6379
[6020] 10 Aug 20:58:21 - 0 clientsconnected (0 slaves), 533432 bytes in use
[6020] 10 Aug 20:58:30 - 0 clientsconnected (0 slaves), 533432 bytes in use
由於預設配置是連線到本機的
這時候你要修改配置檔案的ip地址連線你伺服器啊
還有就是執行:sysctl vm.overcommit_memory=1
然後再啟動服務就可以了
關於redis一些資料的學習可以到http://www.cnblogs.com/xhan/archive/2011/02/08/1949867.html去學習 ,很全面
下面介紹一個簡單java客戶端Jedis,大家可以到https://github.com/xetorthio/jedis這網址下載
這裡給大家提供一個簡單的對jedis的封裝類以供參考
Redis.java
- package com.ajun.redis;
- import java.util.HashMap;
- import java.util.HashSet;
- import java.util.List;
- import java.util.Map;
- import java.util.Set;
- import redis.clients.jedis.Jedis;
- import redis.clients.jedis.JedisPool;
- import redis.clients.jedis.JedisPoolConfig;
- /**
- *
- * @author ajun
- *
- */
- public class Redis {
- private static JedisPool pool;
- private static int DBIndex;
- private static String host;
- private static int port=6379;
- private static int timeout=60*1000;
- static {
- DBIndex=Integer.parseInt(PubConstant.getConfigureValue("redis_dbindex"));
- host=PubConstant.getConfigureValue("redis_host");
- JedisPoolConfig config = new JedisPoolConfig();
- config.setMaxActive(100);
- config.setMaxIdle(20);
- config.setMaxWait((long)1000);
- config.setTestOnBorrow(false);
- pool = new JedisPool(config, host, port, timeout);//執行緒數量限制,IP地址,埠,超時時間
- }
- public static void addItemToList(String key,byte[] value)
- {
- Jedis jedis=null;
- try {
- jedis = pool.getResource();
- jedis.connect();
- jedis.select(DBIndex);
- jedis.lpush(key.getBytes(), value);
- } catch (Exception e) {
- e.printStackTrace();
- }
- finally{
- if(jedis!=null)
- pool.returnResource(jedis);
- }
- }
- @SuppressWarnings("finally")
- public static List<String> getItemFromList(String key)
- {
- Jedis jedis=null;
- //byte[] s=null;
- List<String> ss=null;
- try {
- jedis = pool.getResource();
- jedis.select(DBIndex);
- long len=jedis.llen(key);
- if(len==0) return null;
- ss = jedis.lrange(key, 0, (int)len);
- } catch (Exception e) {
- e.printStackTrace();
- }
- finally{
- if(jedis!=null)
- pool.returnResource(jedis);
- return ss;
- }
- }
- public static void addItem(String key,byte[] value)
- {
- Jedis jedis=null;
- try {
- jedis = pool.getResource();
- jedis.select(DBIndex);
- jedis.set(key.getBytes(), value);
- } catch (Exception e) {
- e.printStackTrace();
- }
- finally{
- if(jedis!=null)
- pool.returnResource(jedis);
- }
- }
- public static byte[] getItem(String key)
- {
- Jedis jedis=null;
- byte[] s=null;
- try {
- jedis = pool.getResource();
- jedis.select(DBIndex);
- s = jedis.get(key.getBytes());
- return s;
- } catch (Exception e) {
- e.printStackTrace();
- return s;
- }
- finally{
- if(jedis!=null)
- pool.returnResource(jedis);
- }
- }
- public static void delItem(String key)
- {
- Jedis jedis=null;
- try {
- jedis = pool.getResource();
- jedis.select(DBIndex);
- jedis.del(key.getBytes());
- } catch (Exception e) {
- e.printStackTrace();
- }
- finally{
- if(jedis!=null)
- pool.returnResource(jedis);
- }
- }
- public static long getIncrement(String key)
- {
- Jedis jedis=null;
- try {
- jedis = pool.getResource();
- jedis.select(DBIndex);
- return jedis.incr(key);
- } catch (Exception e) {
- e.printStackTrace();
- return 0L;
- }
- finally{
- if(jedis!=null)
- pool.returnResource(jedis);
- }
- }
- /**
- * 設定map 可以儲存使用者資訊
- * @param key
- * @param map
- */
- public static void setHashMap(String key,HashMap<String,String> map){
- Jedis jedis=null;
- try {
- jedis = pool.getResource();
- jedis.select(DBIndex);
- if(map!=null && !map.isEmpty()){
- for(Map.Entry<String, String> entry : map.entrySet()){
- jedis.hset(key, entry.getKey(), entry.getValue());
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- }finally{
- if(jedis!=null)
- pool.returnResource(jedis);
- }
- }
- public static Map<String,String> getHashMap(String key){
- Map<String,String> map = new HashMap<String,String>();
- Jedis jedis=null;
- try {
- jedis = pool.getResource();
- jedis.select(DBIndex);
- map = jedis.hgetAll(key);
- } catch (Exception e) {
- e.printStackTrace();
- }finally{
- if(jedis!=null)
- pool.returnResource(jedis);
- }
- return map;
- }
- /**
- * 新增set
- * @param key
- * @param set
- */
- public static void addSet(String key,Set<String> set){
- Jedis jedis=null;
- try {
- jedis = pool.getResource();
- jedis.select(DBIndex);
- if(set!=null && !set.isEmpty()){
- for(String value : set){
- /*for ( Iterator<String> memberItr =
- jedis.smembers(str).iterator();//返回key對應set的所有元素,結果是無序的
- memberItr.hasNext();){
- final String member = memberItr.next();
- if (!jedis.sismember(str, member)){
- jedis.srem(str, member);
- }
- }*/
- jedis.sadd(key, value);
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- }finally{
- if(jedis!=null)
- pool.returnResource(jedis);
- }
- }
- public static Set<String> getSet(String key){
- Set<String> sets = new HashSet<String>();
- Jedis jedis=null;
- try {
- jedis = pool.getResource();
- jedis.select(DBIndex);
- sets = jedis.smembers(key);
- } catch (Exception e) {
- e.printStackTrace();
- }finally{
- if(jedis!=null)
- pool.returnResource(jedis);
- }
- return sets;
- }
- }
相關文章
- [Hadoop]轉載-Pig的簡單介紹Hadoop
- Redis介紹和使用Redis
- java字串的簡單介紹(轉)Java字串
- MSMQ的簡單介紹(收藏) (轉)MQ
- SqlDataAdapter簡單介紹 (轉)SQLLDAAPT
- Oracle 鎖簡單介紹(轉)Oracle
- Oracle鎖簡單介紹(轉)Oracle
- javascript方法過載簡單介紹JavaScript
- [轉]Oracle資料庫ASH和AWR的簡單介紹Oracle資料庫
- Teradata資料庫功能操作簡單介紹(轉載)資料庫
- (轉)簡單介紹java EnumerationJava
- python內建函式的簡單使用和介紹Python函式
- dom物件和jQuery物件相互轉換簡單介紹物件jQuery
- 簡單介紹redis加鎖常用幾種方式Redis
- ARouter簡單入門和介紹
- javascript &&和||運算子簡單介紹JavaScript
- 簡單介紹nginx 變數使用Nginx變數
- webstorm簡單介紹,webstrom基本使用WebORM
- Webpack 的簡單介紹Web
- Promise的簡單介紹Promise
- CFRunloopObserverRef 的簡單介紹OOPServer
- URL和URI的區別簡單介紹
- div和span元素的用法簡單介紹
- 簡單介紹 "&&" 與 “&” 和 ”|“ 與 ”||“ 的區別
- javascript匿名函式的使用簡單介紹JavaScript函式
- TCP/UDP簡單介紹及JavaSocket的使用TCPUDPJava
- 簡單易懂的 Go 泛型使用和實現原理介紹Go泛型
- javascript圖片預載入簡單介紹JavaScript
- Oracle中的外連線簡單介紹(轉)Oracle
- 簡單介紹nginx反向代理及使用Nginx
- POP簡單介紹與使用實踐
- SVG簡單介紹SVG
- HTML簡單介紹HTML
- ActiveMQ簡單介紹MQ
- HTML 簡單介紹HTML
- JavaScript 簡單介紹JavaScript
- CSS 簡單介紹CSS
- SCSS 簡單介紹CSS