1. 程式人生 > 其它 >Redis入門詳解

Redis入門詳解

①.Redis簡介

Redis是一個使用C語言編寫的key-value開源的NOSQL儲存系統。(區別於MySQL的二維表格的形式儲存)。

Redis是單執行緒+多路IO複用技術

②.Redis特點

1、高效性:Redis讀取的速度是110000次/s,寫的速度是81000次/s
2、原子性:Redis的所有操作都是原子性的,不能再細化的。
3、支援杜仲資料結構:string(字串);list(列表);hash(雜湊),set(集合)
4、穩定性強:支援資料持久化,支援主從結構的資料備份
5、其他:支援資料有效期,支援訂閱。

③.Redis適用場景

1、.取最新N個數據的操作
2、取TOP N操作
3、需要精準設定過期時間的場景

4、計數器應用
5、Uniq操作,獲取某段時間所有資料排重值
6、Pub/Sub構建實時訊息系統
7、快取資料(快取的是熱資料)
8、構建佇列系統

熱資料:經常被使用的資料,訪問頻次較高的資料為熱資料。

④.Redis不適用場景

需要事務支援
基於sql的結構化查詢儲存,處理複雜的關係,需要即席查詢

⑤Nosq資料庫舉例

1、memcache 比較早的Nosq資料庫,不持久化,目前適用的很少
2、redis 覆蓋了memcache幾乎所有功能,支援資料持久化,支援多種資料結構的儲存
3、mongoDB 也是key-value模式,對value進行了很多優化,在部分場景中可以取代關係性資料庫。
4、hbase海量資料,精確查詢,快速返回

⑥Redis 安裝部署

1、上傳安裝包,並解壓。

2、安裝編譯需要的環境

yum install -y gcc-c++
yum install -y tcl

3、編譯redis( C語言編寫的軟體需要重新編譯 )

make && make install

看到如下表示編譯成功

4、修改配置檔案

首先建立日誌存放路徑和資料持久化儲存的路徑

mkdir -p /export/servers/redis-3.2.8/logs
mkdir -p /export/servers/redis-3.2.8/redisdata

修改配置檔案

bind node01
daemonize yes
pidfile /var/run/redis_6379.pid
logfile "/export/servers/redis-3.2.8/logs/redis.log"
dir /export/servers/redis-3.2.8/redisdata

5、啟動並驗證

./redis-server ../redis.conf
[[email protected] src]# ps -ef |grep redis
root 7472 1 0 01:17 ? 00:00:00 ./redis-server node01:6379

驗證

[[email protected] src]# ./redis-cli -h node01
node01:6379> set name zhangsan
node01:6379> keys *
1) "name"
node01:6379> get name
"zhangsan"
node01:6379>

程式碼

//獲取redis連線池
        JedisPool jedisPool = new JedisPool("192.168.100.103",6379);
        //獲取連線物件
        Jedis jedis = jedisPool.getResource();
        //通過物件呼叫api
        //jedis.set("string9999","233333");
        String string9999 = jedis.get("string9999");
        System.out.println(string9999);
        jedis.close();
//設定資料庫連線池
        JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
        //設定連線池的最大連線數
        jedisPoolConfig.setMaxTotal(50);
        //設定最大空閒數量
        jedisPoolConfig.setMaxIdle(10);
        //設定最大小空閒數量
        jedisPoolConfig.setMaxIdle(5);
        //連線超時時間(最大等待時間)
        jedisPoolConfig.setMaxWaitMillis(30);
        //獲取redis連線池
        JedisPool jedisPool = new JedisPool(jedisPoolConfig,"192.168.100.103", 6379);
        //獲取連線物件
        Jedis jedis = jedisPool.getResource();
        //通過物件呼叫api
        String string9999 = jedis.get("string9999");
        System.out.println(string9999);
        jedis.close();