成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

Redis使用

denson / 1795人閱讀

摘要:將值插入到列表當(dāng)中,位于值之前或之后有多個(gè)值默認(rèn)第一個(gè)對(duì)數(shù)據(jù)類型的操作類似于集合模式不變,但是一個(gè)鍵值對(duì)插入獲得多個(gè)插入獲得鍵值刪除返回長(zhǎng)度查看哈希表中,給定域是否存在。的缺點(diǎn)是最后一次持久化后的數(shù)據(jù)可能丟失。

redis redis簡(jiǎn)介

簡(jiǎn)介:Redis:REmote DIctionary Server(遠(yuǎn)程字典服務(wù)器),是完全開(kāi)源免費(fèi)的,用C語(yǔ)言編寫(xiě)的,遵守BSD協(xié)議,是一個(gè)高性能的(key/value)分布式內(nèi)存數(shù)據(jù)庫(kù),基于內(nèi)存運(yùn)行并支持持久化的NoSQL數(shù)據(jù)庫(kù),是當(dāng)前最熱門(mén)的NoSql數(shù)據(jù)庫(kù)之一,也被人們稱為數(shù)據(jù)結(jié)構(gòu)服務(wù)器

redis功能

1.內(nèi)存存儲(chǔ)和持久化:redis支持異步將內(nèi)存中的數(shù)據(jù)寫(xiě)到硬盤(pán)上,同時(shí)不影響繼續(xù)服務(wù)

2.取最新N個(gè)數(shù)據(jù)的操作,如:可以將最新的10條評(píng)論的ID放在Redis的List集合里面

3.模擬類似于HttpSession這種需要設(shè)定過(guò)期時(shí)間的功能

4.發(fā)布、訂閱消息系統(tǒng)

5.定時(shí)器、計(jì)數(shù)器......

redis學(xué)習(xí)步驟

1.數(shù)據(jù)類型、基本操作和配置

2.持久化:RDB/AOF

3.事務(wù)的控制

4.主從復(fù)制

windows系統(tǒng)下的redis安裝以及卸載 安裝

環(huán)境變量: 將解壓縮的安裝包放到指定位置,復(fù)制路徑到Path中

注冊(cè)系統(tǒng)服務(wù): 進(jìn)入需要安裝的redis目錄下面執(zhí)行cmd:

redis-server --service-install redis.windows.conf --service-name redis

卸載

redis-server --service-uninstall --service-name redis

啟動(dòng)

net start redis

關(guān)閉

net stop redis

使用redis

1.啟動(dòng)redis服務(wù)

2.Redis-cli -p 6379連接端口號(hào)為6379的redis

3.輸入set k1 v1,就是往redis數(shù)據(jù)庫(kù)中存放了一個(gè)鍵為k1值為v1的數(shù)據(jù)

4.輸入 get k1即可獲得數(shù)據(jù)庫(kù)中保存的k1對(duì)應(yīng)的值

5.退出當(dāng)前客戶端:shutdown(退出Redis),quit(返回)

6;關(guān)閉redis服務(wù):net stop redis

7:客戶端默認(rèn)不顯示中文redis-cli --raw -p 6379

需要了解的常識(shí)問(wèn)題

1.redis默認(rèn)16個(gè)數(shù)據(jù)庫(kù),類似數(shù)組下表從零開(kāi)始,初始默認(rèn)使用零號(hào)庫(kù)

2.select命令切換數(shù)據(jù)庫(kù):select 3 切換到下標(biāo)為3的庫(kù)

3.dbsize命令:查看當(dāng)前數(shù)據(jù)庫(kù)的key的數(shù)量

4.flushdb命令:清空當(dāng)前庫(kù)

5.Flushall命令 : 清空全部庫(kù)

6.redis默認(rèn)端口號(hào)為6379

7.redis默認(rèn)不設(shè)置密碼(快速)


redis5大數(shù)據(jù)類型介紹 類型簡(jiǎn)介

類似于關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)類型,redis的五大數(shù)據(jù)類型是程序往redis數(shù)據(jù)庫(kù)存數(shù)據(jù)的5中形式

string:string是redis最基本的類型,一個(gè)key對(duì)應(yīng)一個(gè) value(重要)

hash:哈希,類似java里的Map集合,常用來(lái)存儲(chǔ)java里面的Object(非常重要)

list:Redis 列表是簡(jiǎn)單的字符串列表,按照插入順序排序, 你可以添加一個(gè)元素導(dǎo)列表的頭部(左邊)或者尾 部(右邊),類似于LinkList

set:Redis的Set是string類型的無(wú)序不重復(fù)集合。它是通過(guò)HashTable實(shí)現(xiàn)實(shí)現(xiàn)的

zset(sorted set):有序集合,Redis zset 和 set 一樣也 是string類型元素的集合,且不允許重復(fù)的成員,不同的是 每個(gè)元素都會(huì)關(guān)聯(lián)一個(gè)double類型的分?jǐn)?shù) redis正是通過(guò)分?jǐn)?shù)來(lái)為集合中的成員進(jìn)行從小到大的排序.zset的成員是唯一的,但分?jǐn)?shù)(score)卻可以重復(fù).

5大數(shù)據(jù)類型分類介紹 對(duì)key的操作

keys *:查詢?cè)搸?kù)中所有key

scan:循環(huán)查詢鍵

exists key:判斷某個(gè)key是否存在

expire key 秒鐘:為給定的key設(shè)置過(guò)期時(shí)間

ttl key: 查看還有多少秒過(guò)期,-1表示永不過(guò)期,-2表示已過(guò)期

type key:查看你的key是什么類型

get key:返回 key 所關(guān) 聯(lián)的字符串值,如果 key 不存在那么返回特殊值 nil

set key value:設(shè)置值

del key:刪除

對(duì)string數(shù)據(jù)類型的操作

append key value:如果 key 已經(jīng)存在并且是一個(gè)字符串,APPEND 命令將 value 追加到 key 原來(lái)的值的末尾。如果 key 不存在, APPEND 就簡(jiǎn)單地將給定 key 設(shè)為 value ,就像執(zhí)行 SET key value 一樣。

strlen key :返回 key 所儲(chǔ)存的字符串值的長(zhǎng)度。

incr/decr/incrby/decrby:自增/自減/加指定值/減指定值

getrange key start end/setrange key index value:返回 key 中字符串值的子字符串/用 value 參數(shù)覆寫(xiě)給定 key 所儲(chǔ)存的字符串值,從偏移量 index開(kāi)始。

setex key seconds value/setnx key value:將值 value 關(guān)聯(lián)到 key ,并將 key 的生存時(shí)間設(shè)為 seconds (以秒為單位).如果 key 已經(jīng)存在,SETEX 命令將覆寫(xiě)舊值/將 key 的值設(shè)為 value ,當(dāng)且僅當(dāng) key 不存在。

mset/mget/msetnx:設(shè)置多個(gè)/獲得多個(gè)/設(shè)置多個(gè)當(dāng)key不存在時(shí)

getset:將給定 key 的值設(shè)為 value ,并返回 key 的舊值(old value)。

對(duì)list數(shù)據(jù)類型的操作

數(shù)據(jù)可重復(fù):(l可以理解為頭,r理解為尾),有下標(biāo),它是一個(gè)字符串鏈表,left、right都可以插入添加;如果鍵不存在,創(chuàng)建新的鏈表;如果鍵已存在,新增內(nèi)容;如果值全移除,對(duì)應(yīng)的鍵也就消失了。鏈表的操作無(wú)論是頭和尾效率都極高,但假如是對(duì)中間元素進(jìn)行操作,效率就很慘淡了。

lpush/rpush/lrange key start stop:左加入/右加入/獲取區(qū)間數(shù)據(jù)0 -1代表取全部

lpop key/rpop key:移除并返回列表頭部/尾部

llen key:長(zhǎng)度

lrem key count value:移除列表中與參數(shù) value 相等指定count個(gè)數(shù)的元素。

ltrim key start stop:獲取指定區(qū)間的數(shù)據(jù)在賦值給key

rpoplpush k1 k2:將第一個(gè)列表尾部元素拿出放到第二個(gè)列表頭部

lset key index value:將列表 key 下標(biāo)為 index 的元素的值設(shè)置為 value 。

linsert key before/after pivot value:將值 value 插入到列表 key 當(dāng)中,位于值 pivot 之前或之后,有多個(gè)值默認(rèn)第一個(gè)

對(duì)hash數(shù)據(jù)類型的操作

類似于Map集合,KV模式不變,但V是一個(gè)鍵值對(duì)

hset/hget/hmset/hmget/hgetall/hdel:插入/獲得/多個(gè)插入/獲得鍵值/刪除

hlen key:返回長(zhǎng)度

hexists key field:查看哈希表 key 中,給定域 field 是否存在。

hkeys/hvals:取出所有的域/取出所有的域的值

hincrby key field increment/hincrbyfloat:為哈希表 key 中 的域 field 的值加上增量 increment /為哈希表 key 中的域 field 加上浮點(diǎn)數(shù)增量 increment

hsetnx:和set類似,key不存在賦值,key存在操作無(wú)效

對(duì)set數(shù)據(jù)類型的操作

sadd/smembers key/sismember key member:將一個(gè)或多個(gè) member 元素加入到集合 key 當(dāng)中,已經(jīng)存在于集合的 member 元素將被忽略/返回集合 key 中的所有成員/判斷 member 元素是否集合 key 的成員

scard key:獲取集合里面的元素個(gè)數(shù)

srem key value:刪除集合中元素

srandmember key num:某個(gè)整數(shù)(隨機(jī)出num個(gè)數(shù)):那么返回指定集合中的一個(gè)隨機(jī)元素

spop key :移除并返回集合中的一個(gè)隨機(jī)元素。

smove k1 k2 member:將 member 元素從 k1集合移動(dòng)到 k2集合。

sdiff k1 k2.....:差集,在第一個(gè)里面而不在后面任何一個(gè)set里面的項(xiàng)

sinter:交集

sunion:并集

對(duì)zset數(shù)據(jù)類型的操作

在set基礎(chǔ)上,加一個(gè)score值。之前set是k1 v1 v2 v3,現(xiàn)在zset是k1 score1 v1 score2 v2

zadd key score member:將一個(gè)或多個(gè) member 元素及其 score 值加入到有序集 key 當(dāng)中

zrem key value:移除key集合中的value值

zcard:返回元素個(gè)數(shù)

zcount key min max:返回元素個(gè)數(shù),scores分?jǐn)?shù)在min和max之間

zrank key value:返回有序集 key 中成員 value的排名。其中有序集成員按 score 值遞增(從小到大)順序排列。zrevrank key value:從大到小

zrange key index [withscores]:返回區(qū)間中的數(shù)據(jù)(分?jǐn)?shù)從小到大)

zrevrange key index [withscores];返回區(qū)間中的數(shù)據(jù)(分?jǐn)?shù)從大到小)

參考鏈接
redis命令大全

redis持久化

redis是內(nèi)存數(shù)據(jù)庫(kù),內(nèi)存里面的數(shù)據(jù)在關(guān)機(jī)或者斷電時(shí)會(huì)清空,那么怎么把內(nèi)存中的時(shí)候永久保存下來(lái)就是持久化(把數(shù)據(jù)保存到本地硬盤(pán)),通常用兩種方式:

RDB(Redis DataBase)

AOF(Append Only File)

RDB

在指定的時(shí)間間隔內(nèi)將內(nèi)存中的數(shù)據(jù)集快照寫(xiě)入磁盤(pán),也就是行話講的Snapshot快照,它恢復(fù)時(shí)是將快照文件直接讀到內(nèi)存里,Redis會(huì)多帶帶創(chuàng)建(fork)一個(gè)子進(jìn)程來(lái)進(jìn)行持久化,會(huì)先將數(shù)據(jù)寫(xiě)入到一個(gè)臨時(shí)文件中,待持久化過(guò)程都結(jié)束了,再用這個(gè)臨時(shí)文件替換上次持久化好的文件。整個(gè)過(guò)程中,主進(jìn)程是不進(jìn)行任何IO操作的,這就確保了極高的性能如果需要進(jìn)行大規(guī)模數(shù)據(jù)的恢復(fù),且對(duì)于數(shù)據(jù)恢復(fù)的完整性不是非常敏感,那RDB方式要比AOF方式更加的高效。RDB的缺點(diǎn)是最后一次持久化后的數(shù)據(jù)可能丟失。

RDB配置 RDB注意事項(xiàng)

1.通過(guò)配置滿足條件時(shí)快照可以自動(dòng)觸發(fā),并產(chǎn)生dump.rdb文件,當(dāng)然也可以通過(guò)save命令手動(dòng)觸發(fā)快照,在save的時(shí)候阻塞其他操作,bgsave會(huì)在后臺(tái)異步進(jìn)行快照操作,快照同時(shí)還可以響應(yīng)客戶端請(qǐng)求??梢酝ㄟ^(guò)lastsave命令獲取最后一次成功執(zhí)行快照的時(shí)間

2.執(zhí)行flushall命令,也會(huì)產(chǎn)生dump.rdb文件,但里面是空的,無(wú)意義

3.將備份文件 (dump.rdb) 移動(dòng)到 redis 安裝目錄并啟動(dòng)服務(wù)可以自動(dòng)的把硬盤(pán)中的數(shù)據(jù)導(dǎo)入到內(nèi)存中

RBD優(yōu)缺點(diǎn)

優(yōu)點(diǎn):適合大規(guī)模的數(shù)據(jù)恢復(fù),對(duì)數(shù)據(jù)完整性和一致性要求不高

缺點(diǎn):在一定間隔時(shí)間做一次備份,所以如果redis意外down掉的話,就會(huì)丟失最后一次快照后的所有修改,fork的時(shí)候,內(nèi)存中的數(shù)據(jù)被克隆了一份,大致2倍的膨脹性需要考慮

AOF

以日志的形式來(lái)記錄每個(gè)寫(xiě)操作,將Redis執(zhí)行過(guò)的所有寫(xiě)指令記錄下來(lái)(讀操作不記錄),只許追加文件但不可以改寫(xiě)文件,redis啟動(dòng)之初會(huì)讀取該文件重新構(gòu)建數(shù)據(jù),換言之,redis重啟的話就根據(jù)日志文件的內(nèi)容將寫(xiě)指令從前到后執(zhí)行一次以完成數(shù)據(jù)的恢復(fù)工作

AOF配置

AOF默認(rèn)是關(guān)閉的,需要的話可以在配置文件中打開(kāi)修改默認(rèn)的appendonly no,改為yes,AOF產(chǎn)生的文件的名字默認(rèn)叫:appendonly.aof


AOF注意事項(xiàng)

AOF采用文件追加方式,文件會(huì)越來(lái)越大為避免出現(xiàn)此種情況,新增了重寫(xiě)機(jī)制,當(dāng)AOF文件的大小超過(guò)所設(shè)定的閾值時(shí),Redis就會(huì)啟動(dòng)AOF文件的內(nèi)容壓縮,只保留可以恢復(fù)數(shù)據(jù)的最小指令集.可以使用命令bgrewriteaof,AOF文件持續(xù)增長(zhǎng)而過(guò)大時(shí),會(huì)fork出一條新進(jìn)程來(lái)將文件重寫(xiě)(也是先寫(xiě)臨時(shí)文件最后再rename),遍歷新進(jìn)程的內(nèi)存中數(shù)據(jù),每條記錄有一條的Set語(yǔ)句。重寫(xiě)aof文件的操作,并沒(méi)有讀取舊的aof文件,而是將整個(gè)內(nèi)存中的數(shù)據(jù)庫(kù)內(nèi)容用命令的方式重寫(xiě)了一個(gè)新的aof文件,這點(diǎn)和快照有點(diǎn)類似

AOF優(yōu)缺點(diǎn)

如果rdb和aof文件共存的時(shí)候先加載aof文件,由于如果aof文件損壞導(dǎo)致redis無(wú)法啟動(dòng):進(jìn)入Redis安裝目錄:輸入redis-check-aof --fix appendonly.aof修復(fù)

優(yōu)點(diǎn):同步持久化每次發(fā)生數(shù)據(jù)變更會(huì)被立即記錄到磁盤(pán)性能較差但數(shù)據(jù)完整性比較好

缺點(diǎn):aof運(yùn)行效率要慢于rdb,每秒同步策略效率較好,不同步效率和rdb相同

redis主從復(fù)制

在實(shí)際開(kāi)發(fā)過(guò)程中一般一臺(tái)主服務(wù)器會(huì)有多個(gè)從服務(wù)器,當(dāng)主服務(wù)器發(fā)生故障的時(shí)候,從服務(wù)器能替代主服務(wù)器的功能,那么就要要求主從服務(wù)器之間的數(shù)據(jù)要同步,主服務(wù)器實(shí)時(shí)的吧數(shù)據(jù)復(fù)制到從服務(wù)器上,一般主服務(wù)器復(fù)制寫(xiě),從服務(wù)器負(fù)責(zé)讀,實(shí)現(xiàn)讀寫(xiě)分離

redis主從復(fù)制配置

當(dāng)從機(jī)連接上主機(jī)以后會(huì)把主機(jī)中所有的數(shù)據(jù)都同步到從機(jī)中,并且從機(jī)只能讀不能寫(xiě)

在從服務(wù)器上配置:

slaveof 主機(jī)ip 端口號(hào)從機(jī)每次斷開(kāi)都要執(zhí)行該命令,可以寫(xiě)入配置文件

slaveof no one:解除從機(jī)狀態(tài)

info replication :查看當(dāng)前主從狀態(tài)

redis哨兵模式

當(dāng)主機(jī)發(fā)生故障時(shí)從從機(jī)中自動(dòng)選出一個(gè)替代主機(jī)

1.在安裝目錄下創(chuàng)建sentinel.conf文件(哨兵配置文件)添加內(nèi)容格式:

sentinel monitor myMonitor 127.0.0.1 6379 1

2.啟動(dòng)哨兵進(jìn)入哨兵配置文件所在目錄:redis-server sentinel.conf --sentinel

3.啟動(dòng)主機(jī)和從機(jī)

4.設(shè)置主機(jī)故障

java操作redis 獲取redis數(shù)據(jù)庫(kù)連接的工具類
package com.zl.util;



import redis.clients.jedis.Jedis;

import redis.clients.jedis.JedisPool;

import redis.clients.jedis.JedisPoolConfig;



public class JedisUtil {

    //連接池對(duì)象

    private JedisPool jp=null;

    //創(chuàng)建連接池配置對(duì)象

    private JedisPoolConfig jpc=null;

    private static JedisUtil ju=new JedisUtil();

    private JedisUtil(){

        //創(chuàng)建連接池對(duì)象

        jpc=new JedisPoolConfig();

        //最大空閑連接

        jpc.setMaxIdle(8);

        //最大連接數(shù)

        jpc.setMaxTotal(100);

        //最大等待毫秒數(shù)

        jpc.setMaxWaitMillis(10000);

        //保證獲得的連接都可用

        jpc.setTestOnBorrow(true);

        jp=new JedisPool(jpc, "localhost",6380);

    }

    public static JedisUtil init(){

        return ju;

    }

    //返回?cái)?shù)據(jù)庫(kù)連接

    public Jedis getJedis(){

        return jp.getResource();

    }

}

序列化方式存儲(chǔ)對(duì)象到redis
package com.zl.util;



import java.io.ByteArrayInputStream;

import java.io.ByteArrayOutputStream;

import java.io.IOException;

import java.io.ObjectInputStream;

import java.io.ObjectOutputStream;



public class SerUtil {

    /*

     * 把一個(gè)對(duì)象序列化成一個(gè)byte數(shù)組以及反序列化

     */

    public static byte[] getByte(Object o){ 

        byte[] bs=null;

        //對(duì)象輸出流

        ObjectOutputStream oos=null;

        ByteArrayOutputStream bos=null;

        bos=new ByteArrayOutputStream();

        try {

            oos=new ObjectOutputStream(bos);

            oos.writeObject(o);

            bs=bos.toByteArray();

            bos.flush();

        } catch (IOException e) {

            e.printStackTrace();

        }finally{

            try {

                oos.close();

            } catch (IOException e) {

                e.printStackTrace();

            }

        }

        return bs;

    }

    //反序列化

    public static Object getObject(byte[] bs){

        Object o=null;

        ObjectInputStream ois=null;

        ByteArrayInputStream bis=null;

        bis=new ByteArrayInputStream(bs);

        try {

            ois=new ObjectInputStream(bis);

            o=ois.readObject();

        } catch (IOException e) {

            e.printStackTrace();

        } catch (ClassNotFoundException e) {

            e.printStackTrace();

        }finally{

            try {

                ois.close();

            } catch (IOException e) {

                e.printStackTrace();

            }

        }

        return o;

    }

}

使用JSON格式字符串存儲(chǔ)對(duì)象到redis spring和redis整合 導(dǎo)入依賴
    
        redis.clients
        jedis
        2.9.0
     
    
        org.apache.commons
         commons-pool2
        2.4.2
     
    
        org.springframework.data
        spring-data-redis
        1.6.0.RELEASE
    
編寫(xiě)配置文件




    

    

    

        

        

        

        

    

    

    

        

        

        

        

    

    

    

        

    

    

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/71831.html

相關(guān)文章

  • 安裝和使用Redis

    摘要:安裝相比之下,由于一開(kāi)始就是設(shè)計(jì)在上使用的,所以安裝就比較簡(jiǎn)單了。對(duì)于其他系統(tǒng),使用它們的包管理器安裝即可。安裝完成之后,使用下面的命令啟動(dòng)。這時(shí)候需要使用命令進(jìn)行認(rèn)證,才能繼續(xù)操作。 Redis是一個(gè)高性能的內(nèi)存數(shù)據(jù)庫(kù),它體積輕巧性能又高,在企業(yè)中被廣泛使用。 安裝Redis Windows安裝 Redis是為L(zhǎng)inux系統(tǒng)設(shè)計(jì)的,但是也有團(tuán)隊(duì)為Windows做了移植。我們可以到這里...

    edgardeng 評(píng)論0 收藏0
  • Linux_基于Docker搭建Redis集群

    摘要:時(shí)間年月日星期二說(shuō)明基于,開(kāi)始本教程前,請(qǐng)確保您的系統(tǒng)已安裝。為了保證集群的高可用,下面開(kāi)始配置哨兵模式。 時(shí)間:2017年07月11日星期二 說(shuō)明:基于Ubuntu16.04-64bit,開(kāi)始本教程前,請(qǐng)確保您的Linux系統(tǒng)已安裝Docker。 步驟一:Redis鏡像安裝 1、下載Redis鏡像 鏡像中心 推薦使用網(wǎng)易蜂巢的鏡像中心 地址:https://c.163.com/hub...

    hoohack 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<