日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

redis 获取所有key_Redis笔记

發(fā)布時間:2024/9/27 数据库 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 redis 获取所有key_Redis笔记 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

歡迎關(guān)注我的個人微信公眾號,不定期AI論文解讀與開發(fā)技術(shù)分享

NoSQL

NoSQL(Not Only SQL),即不僅僅是SQL,是一項全新的數(shù)據(jù)庫概念,泛指非關(guān)系型數(shù)據(jù)庫。

為什么需要NoSQL

  • High Performance 對數(shù)據(jù)庫高并發(fā)讀寫的需求;
  • High Storage 對海量數(shù)據(jù)的高效率存儲和訪問的需求;
  • High Scalability && High Availability 對數(shù)據(jù)庫的高可擴(kuò)展性和高可用性的需求;
  • NoSQL數(shù)據(jù)庫的四大分類如下:

    • 鍵值(key-value)存儲數(shù)據(jù)庫: Redis
    • 列存儲數(shù)據(jù)庫:HBase
    • 文檔型數(shù)據(jù)庫:mongoDB
    • 圖形數(shù)據(jù)庫:Neo4J

    NoSQL的特點(diǎn):

  • 易擴(kuò)展 NoSQL數(shù)據(jù)庫種類繁多,但是一個共同的特點(diǎn)都是去掉關(guān)系數(shù)據(jù)庫的關(guān)系性特征,數(shù)據(jù)之間并沒有關(guān)系,這樣就非常容易擴(kuò)展;
  • 大數(shù)據(jù)量,高性能 NoSQL數(shù)據(jù)庫都具有非常高的讀寫性能,尤其是在大數(shù)據(jù)量下,同樣表現(xiàn)優(yōu)秀,這得益于它的無關(guān)系性。
  • 靈活的數(shù)據(jù)模型 NoSQL無需事先為要存儲的數(shù)據(jù)建立字段,隨時可以存儲自定義的數(shù)據(jù)格式。
  • 高可用 NoSQL在不太影響性能的情況,可以方便的實(shí)現(xiàn)高可用的架構(gòu)。
  • Redis

    Redis是用C語言開發(fā)的一個開源的高性能鍵值對數(shù)據(jù)庫,它通過提供多種鍵值數(shù)據(jù)類型來適應(yīng)不同場景下的存儲需求,目前為止Redis支持的鍵值數(shù)據(jù)類型如下: 1. 字符串類型;2. 散列類型;3. 列表類型;4. 集合類型;5. 有序集合類型;

    Redis的安裝

    • Redis在Linux上的安裝
    • 安裝redis編譯的c環(huán)境,yum install gcc-c++;
    • 將redis-2.6.16.tar.gz上傳到Linux系統(tǒng)中;
    • 解壓到/usr/local下 tar -xvf redis-2.6.16.tar.gz -C /usr/local;
    • 進(jìn)入redis-2.6.16目錄 使用make命令編譯redis;
    • 在redis-2.6.16目錄中 使用make PREFIX=/usr/local/redis install命令安裝redis到/usr/local/redis中;
    • 拷貝redis-2.6.16中的redis.conf到安裝目錄redis中;
    • 啟動redis 在bin下執(zhí)行命令redis-server redis.conf;
    • 如需遠(yuǎn)程連接redis,需配置redis端口6379在linux防火墻中開發(fā);
      /sbin/iptables -I INPUT -p tcp --dport 6379 -j ACCEPT /etc/rc.d/init.d/iptables save
    注意: 啟動后看到如上歡迎頁面,但此窗口不能關(guān)閉,窗口關(guān)閉就認(rèn)為redis也關(guān)閉了(類似Tomcat通過bin下的startup.bat的方式)。

    解決方案:可以通過修改配置文件 配置redis后臺啟動,即服務(wù)器啟動了但不會創(chuàng)建控制臺窗口將redis.conf文件中的daemonize從false修改成true表示后臺啟動:

    修改redis.conf配置文件,daemonize yes以后端模式啟動:

    vim /usr/local/redis/redis.conf daemonize yes

    啟動時,指定配置文件:

    cd /usr/local/redis ./bin/redis-server ./redis.conf

    Redis停止 * 強(qiáng)制結(jié)束程序,強(qiáng)行終止Redis進(jìn)程可能會導(dǎo)致Redis持久化數(shù)據(jù)丟失

    kill -9 進(jìn)程號 # pid 需要通過“ps aux | grep -i redis” 進(jìn)行查詢
    • 正確停止Redis的方式應(yīng)該是向Redis發(fā)送SHUTDOWN命令,方法為:
    cd /usr/local/redis ./bin/redis-cli shutdown

    Jedis入門

    Java連接Redis

  • 導(dǎo)入jar包
  • 單實(shí)例連接
  • @Test public void testJedisSingle(){// 設(shè)置ip地址和端口Jedis jedis = new Jedis("192.168.1.132", 6379);// 設(shè)置數(shù)據(jù)jedis.set("name", "super1peng");// 獲取數(shù)據(jù)String name = jedis.get("name");System.out.println(name);// 釋放資源jedis.close(); }
  • 連接超時
  • 如果運(yùn)行上面的代碼,拋出如下異常

    redis.clients.jedis.exceptions.JedisConnectionException: java.net.ScoketTimeoutException: connect time out

    必須設(shè)置防火墻

    vim /etc/sysconfig/iptables

    service iptables restart

  • 連接池連接
  • @Test public void testJedisPool(){// 獲得連接池配置對象,設(shè)置配置項JedisPoolConfig config = new JedisPoolConfig();// 設(shè)置最大連接數(shù)config.setMaxTotal(30);// 設(shè)置最大空閑連接數(shù)config.setMaxIdle(30);// 獲得連接池JedisPool jedisPool = new JedisPool(config, "192.168.1.132", 6379);// 獲得核心對象Jedis jedis = null;try{jedis jedisPool.getResource();jedis.set("name","super1peng");System.out.println(name);}catch (Exception e){e.printStackTrace();}finally{if(jedis != null){jedis.close();}if(jedisPool != null){jedis.close();}} }

    Redis數(shù)據(jù)結(jié)構(gòu)

    • redis是一種高級的key-value的存儲系統(tǒng),其中value支持五種數(shù)據(jù)類型
    • 字符串(String);
    • 哈希(hash);
    • 字符串列表(list);
    • 字符串集合(set);
    • 有序字符串集合(sorted set);

    存取String

    • set key value: 設(shè)定key持有指定的字符串value,如果該key存在則進(jìn)行覆蓋操作,總是返回OK;
    • get key: 獲取key的value。如果與該key關(guān)聯(lián)的valye不是String類型,redis將返回錯誤信息,因為get命令只能用于獲取String value;如果該key不存在,返回(nil)。
    • getset key value: 先獲取該key值,然后再設(shè)置該key的值。
    • del key: 刪除指定的key
    • incr key: 將指定的key的value原子性的遞增1,如果該key不存在,其初始值為0,在incr之后,其數(shù)值為1.如果value的值不能轉(zhuǎn)成整形,如hello,該操作將執(zhí)行失敗并返回錯誤信息。
    • decr key: 與incr key相反。
    • incrby key increment: 將指定的key的value原子性增加increment,情況與incr類似;
    • decrby key decrement: 與incrby類似
    • append key value: 拼湊字符串。如果該key存在,則在原有的value后追加該值;如果該key不存在,則重新創(chuàng)建一個key/value。

    存儲hash

    Redis中的Hash類型可以看成具有String Field和String Value的map容器,所以該類型非常適合與存儲值對象的信息。

    • hset key field value: 為指定的key設(shè)定field/value對(鍵值對)。
    • hmset key field value [field2 value2 ...]: 設(shè)置key中的多個field/value。
    • hget key field: 返回指定的key中的field的值。
    • hmget key fields: 獲取key中多個field的值。
    • hgetall key: 獲取key中的所有field-value。
    • hdel key field [field ...]: 可以刪除一個或多個字段,返回值是被刪除的字段的個數(shù)。
    • del key: 刪除整個list。
    • hincrby key field increment: 設(shè)置key中field的值增加increment。
    • hexists key field: 判斷指定的key中的field是否存在。
    • hlen key: 獲取key所包含的field的數(shù)量。
    • hkeys key: 獲取所有的key
    • hvals key: 獲取所有的value

    存儲list

    在Redis中,List類型是按照插入順序排序的字符串鏈表。和數(shù)據(jù)結(jié)構(gòu)中的普通鏈表一樣,我們可以在其頭部(left)和尾部(right)添加新的元素。在插入時,如果該鍵并不存在,Redis將為該鍵創(chuàng)建一個新的鏈表。與此相反,如果鏈表中所有的元素均被移除,那么該鍵也將會被從數(shù)據(jù)庫中刪除。

    • lpush key values [value1, value2 ...]: 指定的key所關(guān)聯(lián)的list的頭部插入所有的values,如果該key不存在,該命令在插入的之前創(chuàng)建一個與該key關(guān)聯(lián)的空鏈表,之后再向該鏈表的頭部插入數(shù)據(jù)。插入成功,返回元素的個數(shù)。
    • rpush key values [value1、value2 ...]: 在該list的尾部添加元素
    • lrange key start end: 獲取鏈表中從start到end的元素的值。
    • lpop key: 返回并彈出指定的key關(guān)聯(lián)的鏈表中的第一個元素,即頭部元素。如果該key不存在,返回nil;若key存在,則返回鏈表的頭部元素。
    • rpop key: 從尾部彈出元素。
    • llen key: 獲取列表中元素的個數(shù)
    • lpushx key value: 僅當(dāng)參數(shù)中指定的key存在時,向關(guān)聯(lián)的list的頭部插入value。如果不存在將不進(jìn)行插入。
    • rpushx key value: 在該list的尾部添加元素
    • lrem key count value: 刪除count個值為value的元素,如果count大于0,從頭向尾遍歷并刪除count個值為value的元素,如果count小于0,則從尾向頭遍歷并刪除。如果count等于0,刪除鏈表中所有等于value的元素。
    • lset key index value: 設(shè)置鏈表中的index的腳標(biāo)的元素值,0代表鏈表的頭元素,-1代表鏈表的尾元素。操作鏈表的腳標(biāo)不存在則拋出異常。
    • linsert key before|after pivot value: 在pivot元素前或者后插入value這個元素。
    • rpoplpush resource destionation: 將鏈表中的尾部元素彈出并添加到頭部。

    存儲set

    Set集合中不允許出現(xiàn)重復(fù)的元素。

    • sadd key values[value1 value2 ...]: 向set中添加數(shù)據(jù),如果該key的值已有則不會重復(fù)添加。
    • srem key members[member1 member2 ...]: 刪除set中指定的成員。
    • smembers key: 獲取set中的所有的成員。
    • sismember key member: 判斷參數(shù)中指定的成員是否在該set中,1表示存在,0表示不存在或者改key本身就不存在。
    • sdiff key1 key2..: 返回key1與key2中相差的成員,而且與key的順序有關(guān)。即返回差集。
    • sinter key1 key2 key3...: 返回交集
    • sunion key1 key2 key3...: 返回并集
    • scard key: 獲取set中成員的數(shù)量
    • srandmember key: 隨機(jī)返回set中的一個成員
    • sdiffstore destination key1 key2 ...: 將key1 key2 相差的成員存儲在destination上。
    • sinterstore destination key1 key2 ...: 將key1 key2相交的成員存儲在destination上。
    • sunionstore destination key [key...]: 將返回的并集存儲在destination上。

    存儲sortedset

    sorted-set與set的主要差別在于Sorted-Set中的每一個成員都會有一個分?jǐn)?shù)(score)與之相關(guān)聯(lián),用于排序。

    • zadd key score member score2 member2 ...: 將所有成員以及該成員的分?jǐn)?shù)存放到sorted-set中。如果該元素已經(jīng)存在則會用新的分?jǐn)?shù)替換原始的分?jǐn)?shù),返回值為新加入到集合中的元素的個數(shù),不包含之前已經(jīng)存在的元素。
    • zscore key member: 返回指定成員的分?jǐn)?shù)
    • zcard key: 獲取集合中的成員數(shù)量
    • zrem key member[member...]: 移除集合中指定的成員,可以指定多個成員
    • zrange key start end [withscores]: 獲取集合中腳標(biāo)為start-end的成員,[withscores]參數(shù)表明返回的成員包含其分?jǐn)?shù)。
    • zrevrange key start stop [withscores]: 照元素分?jǐn)?shù)從大到小的順序返回索引從start到stop之間的所有元素。
    • zremrangebyrank key start stop: 按照排名范圍刪除元素。
    • zremrangebyscore key min max: 按照分?jǐn)?shù)范圍刪除元素。
    • zrangebyscore key min max [withscores] [limit offset count]: 返回分?jǐn)?shù)在[min, max]的成員并按照分?jǐn)?shù)從低到高排序。[limit offset count]:offset,表明從腳標(biāo)為offset的元素開始并返回count個成員。
    • zincrby key increment member: 設(shè)置指定成員的增加的分?jǐn)?shù)。
    • zcount key min max: 獲取分?jǐn)?shù)在[min, max]之間的成員數(shù)量。
    • zrank key member: 返回成員在集合中的排名(從小到大)。
    • zrevrank key member: 返回成員在集合中的排名(從大到小)。

    Redis特性

    • 多數(shù)據(jù)庫

    一個Redis實(shí)例可以包括多個數(shù)據(jù)庫,客戶端可以指定連接某個redis實(shí)例的哪個數(shù)據(jù)庫。

    一個Redis實(shí)例最多可以提供16個數(shù)據(jù)庫,下標(biāo)從0到15,客戶端默認(rèn)連接第0號數(shù)據(jù)庫,也可以通過select選擇連接到哪個數(shù)據(jù)庫。

    move newkey 1: 將當(dāng)前庫的key移植到1號庫中;

    ping,測試連接是否存活;

    echo,在命令行答應(yīng)一些內(nèi)容;

    select,選擇數(shù)據(jù)庫;

    quit,退出連接;

    dbsize,返回當(dāng)前數(shù)據(jù)庫中key的數(shù)目;

    info,獲取服務(wù)器的信息和統(tǒng)計;

    flushdb,刪除當(dāng)前選擇數(shù)據(jù)庫中的所有的key;

    flushall,刪除所有數(shù)據(jù)庫中的所有key;

    消息訂閱與發(fā)布

    subscribe channel: 訂閱頻道

    psubscribe channel*: 批量訂閱頻道

    publish channel content: 在指定的頻道中發(fā)布消息

    redis事務(wù)

    redis事務(wù)的特征:

    在事務(wù)中的所有命令都將會被串行化的順序執(zhí)行,事務(wù)執(zhí)行期間,Redis不會再為其他客戶端的請求提供任何服務(wù),從而保證了事務(wù)中的所有命令被原子的執(zhí)行; 和關(guān)系型數(shù)據(jù)庫中的事務(wù)相比,在Redis事務(wù)中如果有某一條命令執(zhí)行失敗,其后的命令仍會被繼續(xù)執(zhí)行;

    可以通過MULTI命令開啟一個事務(wù),有關(guān)系型數(shù)據(jù)庫開發(fā)經(jīng)驗的人可以將其理解為“BEGIN TRANSACTION”語句,在該語句執(zhí)行的命令都將被視為事務(wù)之內(nèi)的操作,最后我們可以通過執(zhí)行EXEC/DISCARD命令來提交/回滾該事務(wù)內(nèi)的所有操作。 在事務(wù)開啟之前,如果客戶端與服務(wù)器之間出現(xiàn)通訊故障并導(dǎo)致網(wǎng)絡(luò)斷開,其后所有待執(zhí)行的語句都將不會被服務(wù)器執(zhí)行。然而如果網(wǎng)絡(luò)中斷事件是發(fā)生在客戶端執(zhí)行EXEC之后,那么該事務(wù)中所有命令都會被服務(wù)器執(zhí)行。 當(dāng)使用Append-Only模式時,Redis會通常調(diào)用系統(tǒng)函數(shù)write將該事務(wù)內(nèi)的所有寫操作在本次調(diào)用中全部寫入磁盤。如果在寫入的過程中出現(xiàn)系統(tǒng)崩潰,如電源故障導(dǎo)致宕機(jī),那么此時也許只有部分?jǐn)?shù)據(jù)被寫入到磁盤,而另外一部分的數(shù)據(jù)卻已經(jīng)丟失。Redis服務(wù)器會在重新啟動時執(zhí)行一系列必要的一致性檢測,一旦發(fā)現(xiàn)類似的問題,就會立即退出并給出響應(yīng)的錯誤提示。此時,我們只要充分利用Redis工具包中提供的redis-check-aof工具,就可以定位到數(shù)據(jù)不一致的錯誤,并將已經(jīng)寫入的部分?jǐn)?shù)據(jù)進(jìn)行回滾。修復(fù)之后我們就可以再次重新啟動Redis。

    Redis持久化

    Redis的高性能是由于其將所有的數(shù)據(jù)都存儲在內(nèi)存中,為了使Redis在重啟之后仍能保證數(shù)據(jù)不丟失,需要將數(shù)據(jù)從內(nèi)存中同步到硬盤中,這一過程就叫做持久化。

    Redis支持兩種方式的持久化:

    • RDB的方式

    該機(jī)制是指在指定的時間間隔內(nèi)將內(nèi)存中的數(shù)據(jù)集快照寫入磁盤中。

    • AOF的方式

    該機(jī)制將以日志的形式記錄服務(wù)器所處理的每一個寫操作,在Redis服務(wù)器啟動之初會讀取該文件來重新構(gòu)建數(shù)據(jù)庫,以保證啟動后的數(shù)據(jù)庫中的數(shù)據(jù)是完整的。

    • 無持久化

    我們可以通過配置的方式禁用Redis服務(wù)器的持久化功能,這樣我們就可以將Redis視為一個功能加強(qiáng)版的memcached。

    • Redis可以同時使用RDB和AOF

    總結(jié)

    以上是生活随笔為你收集整理的redis 获取所有key_Redis笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 中文字幕乱码一区二区 | 中文字幕88页 | 久久精品一二 | 国产情侣呻吟对白高潮 | av无遮挡| 国产精品日韩一区 | 久久11| 精品一区二区免费视频 | 午夜激情av | 欧美视频免费在线 | 国产精品久久久久久亚洲调教 | 日韩欧美一区二区在线观看 | 国产成人a亚洲精品 | 亚洲黄色精品 | 国产二区三区 | 久久影院一区 | 人妻少妇一区二区三区 | 国产免费叼嘿网站免费 | 国产一级一级片 | 91成人精品| 中字幕一区二区三区乱码 | 男人的天堂狠狠干 | 无码视频一区二区三区 | free性欧美hd另类 | 免费久久一级欧美特大黄 | 艳妇臀荡乳欲伦交换在线播放 | 99久久精品日本一区二区免费 | 91网站观看 | 亚洲欧洲成人在线 | 天天爽天天爽夜夜爽毛片 | 精品无人区无码乱码毛片国产 | 久久午夜国产 | 成人免费区一区二区三区 | 色播导航 | 欧洲女同同性吃奶 | 中文字幕丰满孑伦无码专区 | 中文字幕免费中文 | 成人久久av| 久草免费网站 | 精品女厕偷拍一区二区 | 成人做爰视频www网站小优视频 | 亚洲综合热 | 黄色免费在线看 | 国产精品一二三四 | www.色99 | 日韩有码中文字幕在线 | 在线观看91 | 免费在线看视频 | 性久久久久久久久久 | 国产67194| 日本欧美一区 | 自拍偷拍在线播放 | 亚洲成人福利 | 色综合久久88色综合天天免费 | 黄色av电影网址 | 亚洲精品在线免费播放 | 99久久婷婷国产综合精品 | 在线看片你懂的 | 国产51精品| 无人在线观看高清视频 | 日韩欧美第一页 | 好男人天堂网 | 人人狠狠综合久久亚洲 | 成人黄色网页 | 伊人福利视频 | 中文字幕在线视频播放 | 欧美亚洲少妇 | 日韩经典一区二区三区 | 五月激情婷婷网 | 国产精品美乳在线观看 | 久久久久久影视 | 木下凛凛子av一区二区三区 | 日日夜夜天天 | 麻豆视频在线观看免费 | 日日干干 | 欧美大片高清免费观看 | 美女超碰 | 天堂久久久久 | 97人妻天天摸天天爽天天 | 国产又粗又硬视频 | 999色综合| 欧美精品一二三四区 | 黄色av一区 | 一级片一级片 | 尤物视频一区 | 黄色在线不卡 | 夜夜撸av| 亚洲国产www | 亚洲欧美精品aaaaaa片 | 国产一级二级三级视频 | www四虎com| 精品视频久久久久久久 | 欧美精品一二三四区 | 夜夜爱爱| 中文在线天堂网 | 亚洲av男人的天堂在线观看 | 99精品在线免费观看 | 亚洲中文字幕视频一区 | 97精品人妻一区二区三区蜜桃 |