Redis入門學習

----------NoSQL(Not Only Sql)非關係型數據庫的特性:

1,High performance --高併發讀寫

2,Huge Storage--海量數據的高效率存儲和訪問

3,High Scalability && High Availability--高可擴展性和高可用性

目前市面上流行的NoSQL的數據庫有:Redis、CouchDB、mongoDB、membase、cassandra、riak等

NoSQL數據庫的四大分類:

鍵值存儲(key--value)、列存儲、文檔數據庫、圖形數據庫

NoSQL的特點:易擴展、靈活的數據模型、大數據量,高性能、高可用。

web1.0(關係型數據庫)、web2.0(非關係型數據庫)

-------------Redis

redis高性能鍵值對數據庫,支持的鍵值數據類型:字符串類型、散列類型、列表類型、集合類型、有序集合類型。

--windows環境下安裝Redis及配置環境變量

下載地址:https://github.com/MSOpenTech/redis/releases 

一般下載第二個:Redis-x64-3.2.100.zip,下載後解壓即可。比如我文件是放在D:\DevelopmentRoot\redis下

配置環境變量:找到path,編輯,在最後追加:D:\DevelopmentRoot\redis即可。然後cmd進入命令行方式,輸入:redis-server即打開了redis的服務器,如果要打開redis的客戶端,同理,cmd-->輸入:redis-cli,可看到頁面上出現客戶端的服務器ip及端口,默認ip爲127.0.0.1,端口爲6379,這兩個都是可以進行修改的,打開redis文件夾下面的redis.windows.conf文件,大概在56行,找到:bind 127.0.0.1,表示服務器ip,大概79行找到:port 6379表示默認的端口。比如,我在客戶端輸入:set key abc,回車,然後輸入:get key回車後可以看到“abc”被輸入出來。這一過程就是利用redis數據庫進行字符串的添加值與取值。

redis的五種數據結構:字符串(Stirng)、字符串列表(list)、有序字符串集合(stored set)、哈希(hash)、字符串集合(set)

字符串:二進制安全的,存入和獲取的數據相同;value最多可以容納的數據長度爲512M。

字符串:set存值,get取值,getset先取值在存值;del刪除某個值;incr表示爲某個整型數據進行自增,默認初始值爲0;decr表示爲某個整型數據進行自減,默認初始值爲0;incr key value1(添加的值)表示爲某個整型數增加value1,是incr的擴展命令;同理,decr key value1;append表示爲某個變量追加一個字符串(這個變量可以是字符串也可以是整數等),如append "name" 5,結果就爲name5,如果如果append後面的key爲初始化過,則使用append後的值就爲key後面的value值,比如:append key 1,key未初始化過,則結果爲1.

哈希:hset表示爲某個哈希設置key,value,hget表示獲取某個哈希裏面的key對應的value值;hmset表示爲某個哈希同時設置多個hey,value鍵值對,hmget表示同時可以獲取多個哈希裏面的keys對應的values;hdel表示刪除哈希裏面的指定key,hgetall表示獲取哈希裏面的所有keys,values鍵值對;hincrby表示爲哈希裏面的某個key對應的value值加上某個變量值求和;hexits表示哈希中是否存在某個key,hkeys表示列出哈希裏面的所有key,hvals表示列出哈希裏面的所有values。

。。。。。。。。。。。

redis數據庫:

redis數據庫個數:默認爲16個,可在redis-windows.conf文件中找到,查詢某個數據庫的命令爲:select 0(表示查詢第一個數據庫),select 1表示查詢第二個數據庫,

如果想要將第一個數據庫裏面的name數據轉到第二個數據庫,可先切換到第一個數據庫,然後命令:move name 1即可將該數據轉到第二個數據庫中。

redis事務:
multi:相當於關係型數據庫中的beginSession表示開啓事務;exec:相當於關係型數據庫中的commit,表示提交;discard:相當於關係型數據庫中的rollback。

當開啓事務後如果沒有進行exec,則在另一個客戶端獲取的數據還是之前的數據。

----------------Jedis入門

redis對Java的連接方式有:areids、JDBC-Redis、Jedipus、Jedis、JRedis、lettuce、mod-redis,官網推薦是Jedis連接

新建maven項目,在pom.xml中加入jedis的座標(如果不知道Jedis的座標,可在maven中央倉庫搜索,這裏引用最新Jedis的jar包,Jedis座標如下:)

<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>

如果不想用maven來引包,也可直接下載對應包,然後導入到項目中,這裏不作說明。

以下提供兩個小例子說明怎麼使用,可直接copy出來運行:

package com.org.redis.redis_model;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import org.junit.Test;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
/**
 * Hello world!
 *
 */
public class jedisDemo1
{   
    @Test
    /**
     * 單實例連接
     */
    public void test1(){
        //連接Jedis的服務器
        Jedis jedis=new Jedis("127.0.0.1", 6379);
        //設置字符串值
        jedis.set("name", "jack");
        //取值
        String value=jedis.get("name");
        System.out.println("值爲:"+value);
        //Redis Java String(字符串) 實例 存儲數據到列表中
        jedis.lpush("site-list", "Runoob");
        jedis.lpush("site-list", "Google");
        jedis.lpush("site-list", "Taobao");
        //Redis Java List(列表) 實例 獲取存儲的數據並輸出
        List<String> list = jedis.lrange("site-list", 0 ,2);
        for(int i=0; i<list.size(); i++) {
            System.out.println("列表項爲: "+list.get(i));
        }
        //Redis Java Keys 實例  獲取數據並輸出
        Set<String> keys = jedis.keys("*");
        Iterator<String> it=keys.iterator() ;   
        while(it.hasNext()){   
            String key = it.next();   
            System.out.println(key);   
        }
        //關閉鏈接資源
        jedis.close();     
    }
    @Test
    /**
     * 連接池連接
     */
    public void test2(){
        //獲取連接池的配置對象
        JedisPoolConfig jedisPoolConfig=new JedisPoolConfig();
        //設置最大連接數
        jedisPoolConfig.setMaxTotal(30);
        //設置最大空閒數
        jedisPoolConfig.setMaxIdle(10);    
        //獲取連接池
        JedisPool jedisPool=new JedisPool(jedisPoolConfig,"127.0.0.1",6379);
        //獲取連接對象
        Jedis jedis=null;
        try {
            jedis=jedisPool.getResource();
            //開始添加值
            jedis.set("name", "張三");
            String value=jedis.get("name");
            System.out.println(value);
        } catch (Exception e) {
            System.out.println("連接失敗了!");
        }finally {
            if(jedis != null){
                jedis.close();
            }
            if(jedisPool != null){
                jedisPool.close();
            }
        }               
    }
}

---------------------------------Redis的持久化

所謂持久化就是指將保存在Redis服務端內存的數據同步到本地硬盤來保存,以便後面關閉服務後數據仍然存在的情況。

兩種方式:RDB、AOF以及RDB與AOF合併使用。
在redis客戶端輸入:save然後回車,會在你的redis文件夾下(與redis-server.exe同級的地方)生成一個dump.dbf文件,這個文件就是一個備份文件,如果沒有顯示出來,可能被隱藏了,通過文件選項設置就可以出來了(可百度)。

通過命令:config get dir可獲取到默認生成的dump.dbf文件不存的路徑,也可以在redis.windows.conf文件中找到:dir ./的位置,然後改成:dir D:\DevelopmentRoot\redis(自己想要保存的dump.dbf文件的位置)

-------------redis的Linux系統安裝過程

1,需要安裝gcc工具,在安裝gcc工具時需要是root用戶才能安裝否則會失敗,命令行爲:

yum install gcc

2,然後等待,輸入:y  繼續等待,再次輸入:y  直到看到complete!表示成功安裝好了。

3,下載並解壓Redis(也可用windows環境下下載gz包,然後利用上傳工具FileZilla進行上傳),命令行方式爲:

下載redis:
wget http://download.redis.io/releases/redis-2.8.17.tar.gz
解壓redis
tar xzf redis-2.8.17.tar.gz
打開解壓後的文件
cd redis-2.8.17
編譯:
make
啓動redis服務:
cd src
./redis-server
啓動redis客戶端(需要另開窗口):
cd src
./redis-cli

----------------------------------------

除以上所寫內容,還可以參照以下地址進行學習:

http://www.runoob.com/redis/redis-partitioning.html






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章