Redis入門詳解
阿新 • • 發佈:2021-03-31
①.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、需要精準設定過期時間的場景
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();