天天看點

NoSQL-Redis

Redis簡述:

redis是一個key-value存儲系統。和Memcached類似,它支援存儲的value類型相對更多,包括string(字元串)、list(連結清單)、set(集合)、zset(sorted set –有序集合)和hash(哈希類型)。這些資料類型都支援push/pop、add/remove及取交集并集和差集及更豐富的操作,而且這些操作都是原子性的。在此基礎上,redis支援各種不同方式的排序。與memcached一樣,為了保證效率,資料都是緩存在記憶體中。差別的是redis會周期性的把更新的資料寫入磁盤或者把修改操作寫入追加的記錄檔案,并且在此基礎上實作了master-slave(主從)同步.

安裝:

在cmd裡進入redis檔案,輸入redis-server.exe redis.windows.conf,檢視redis是否安裝成功!

redis-cli.exe(進入指令)

一、String類型:

reids的String類型不僅僅存儲字元,還可以存儲任何資料,比如圖或序列化對象

常用指令:

1. mset - 一次設定多個key值(成功傳回ok,失敗傳回0)
 列:mset key1 hello key2 world   

2.incr - 對key的值做++作業系統磁盤緩存
列:incr age 

3.append - 給指定key的字元串追加value
列:append name san
           

二、List類型

redis的list類型是一種連結清單結構,主要功能是push(進棧),pop(出棧)

常用指令:

1.lpush - 在key對應list的頭部添加字元串元素
列:lpush mylist "hello"

2.lrange -  顯示key對應list的元素
列:lrange mylist 0-11 "hello"

3.lpop -  從key對應listde 的頭部删除元素
列:lpop mylist "world"
           

三、set類型

redis的set類型是String類型的無序集合,底層通過hash表實作

常用指令:

1.sadd - 為指定key的set添加元素
列:sadd myset "hello"

2.smembers - 顯示key對應set的元素
列:smembers myset "hello"

3.srem - 删除指定key的set中元素
列:srem myset "hello"
           

redis常用指令:

  • keys * - 查詢所有key
  • type - 傳回值的類型 列:type mylist
  • exists - 驗證資料(檢查建key是否存在)
  • select - 選擇資料庫(redis資料庫編号0-15) 列:select 1,預設0

Redis進階特性

  • 安全性 - 設定用戶端連接配接後進行任何其他指定前需要使用的密碼
  • 主從複制 - 通過主從複制可以允許多個從slaveserver擁有和masterserver相同的資料庫副本
  • 事物控制 - 由于redis是單線程處理,隻能保證一個clien發起的事務中的指令可以連續的執行,而中間不會插入其他client的指令
  • 持久化機制 - redis可以将記憶體中的資料同步到磁盤中來保證持久化。redis支援兩種持久化方案,一種是(快照方式,也是預設方式),另一種是(AOF)的方式
public class TestRedis {
    private Jedis jedis;

    /**
     * 連接配接redis資料庫
     */

    public void connectRdedis() {
        //參數1、Redis資料庫IP位址
        //參數2、Redis資料庫端口号
        jedis = new Jedis("127.0.0.1",);

        //權限認證
        //jedis.auth("aaaa");   
    }

    /**
     * redis操作字元串類型
     */
    public void testString() {
        //添加資料
        jedis.set("name", "zh");
        System.out.println(jedis.get("name"));

        //拼接字元串
        jedis.append("name","你好");
        System.out.println(jedis.get("name"));

        //删除資料
        jedis.del("name");

        //設定多個資料
        jedis.mset("name","zh","age","23","qq","1234578");
        jedis.incr("age");

    }

    /**
     * redis操作list類型
     */
    public  void  testList() {
        //添加資料
        jedis.lpush("學習","oo");
        jedis.lpush("學習","web");
        jedis.lpush("學習", "ee");

        System.out.println(jedis.lrange("學習", , -));
    }

    /**
     * redis操作set類型
     */
    public void testSet() {
        //添加資料
        jedis.sadd("names","張三");
        jedis.sadd("names","李四");
        jedis.sadd("names","王五");

        System.out.println(jedis.smembers("names"));
    }


    public static void main(String[] args) {
        TestRedis redis = new TestRedis();
        redis.connectRdedis();
        redis.testString();
        redis.testList();
        redis.testSet();
    }
           

繼續閱讀