国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當前位置: 首頁 > news >正文

建設(shè)銀行網(wǎng)站預(yù)約取款長春網(wǎng)站建設(shè)方案咨詢

建設(shè)銀行網(wǎng)站預(yù)約取款,長春網(wǎng)站建設(shè)方案咨詢,找人做網(wǎng)站一般要多少錢,西安公眾號開發(fā)公司什么是redis?主要作用? redis(remote dictionary server)遠程字典服務(wù):是一個開源的使用ANSI C語言編寫,支持網(wǎng)絡(luò)、可基于內(nèi)存可持久化的日志型、key-value數(shù)據(jù)庫,并提供多種語言的api redis的數(shù)據(jù)存在內(nèi)存中&#xff…

什么是redis?主要作用?

redis(remote dictionary server)遠程字典服務(wù):是一個開源的使用ANSI C語言編寫,支持網(wǎng)絡(luò)、可基于內(nèi)存可持久化的日志型、key-value數(shù)據(jù)庫,并提供多種語言的api

redis的數(shù)據(jù)存在內(nèi)存中,讀寫速度非常快,每秒可以超過10萬次讀寫操作。因此廣泛用于緩存,另外,redis也經(jīng)常用來做分布式鎖。

redis的基本數(shù)據(jù)類型

type key:獲取key的類型

  • string

    • 是redis最基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu)類型,可以存儲圖片或者序列化的對象,值最大存儲為512M
    • 應(yīng)用場景:共享session、計數(shù)器、限流等
    • 內(nèi)部編碼:int/embstr(<=39字節(jié)字符串)/raw(>39字節(jié)字符串)
    • 格式功能
      set key value將key-value緩存到Redis中
      get key從redis中獲取key對應(yīng)的value
      del key從Redis中刪除key
      incr key將key對應(yīng)的value加1
      decr key將key對應(yīng)的value減1
      setex key seconds value將key-value緩存到Redis中并設(shè)置過期時間
      setnx key value將key-value緩存到redis中,若key存在,不做任何操作
      ttl key查看key的存活命時間
      incrby key increment給key對應(yīng)值加increment
      mset k1 v1 k2 v2…批量添加key-value對到redis中
      mget k1 k2批量根據(jù)key獲取value
      append key value在key對應(yīng)的value中拼接value
      setrange key offset value從offset位置開始將key對應(yīng)的value,替換為指定value
  • hash

    • hash類型是指v(值)本身又是一個鍵值對結(jié)構(gòu)
    • 內(nèi)部編碼:ziplist、hashtable
    • 應(yīng)用場景:緩存用戶信息等
    • 注意:若開發(fā)使用hgetall,哈希元素比較多的話,可能導(dǎo)致redis阻塞,可以使用hscan.而如果只是獲取部分field,建議使用hmget
    • 命令功能
      hset key field value將field value緩存到redis的hash中,鍵值為key
      hget key field從key對應(yīng)hash中獲取filed字段
      hexists key field判斷key對應(yīng)hash中是否存在field字段
      hincrby key field increment給key對應(yīng)hash中的field字段+increment
      hdel key field刪除key對應(yīng)hash中的field字段
      hkeys key獲取key對應(yīng)hash中的所有field
      hvals key獲取key對應(yīng)hash中的所有filed的val
      hgetall key獲取key對應(yīng)hash中所有的filed和value
  • list

    • 用來存儲多個有序的字符串,一個列表最多可以存儲2^32-1個元素
    • 內(nèi)部編碼:ziplist、linkedlist
    • 應(yīng)用場景:消息隊列,收藏文章列表
      • lpush+lpop=stack
      • lpush+rpop=queue
      • lpsh+ltrim=capped collection(有序集合)
      • lpush+brpop=message queue(消息隊列)
    • 命令功能
      rpush key value從右邊向key集合中添加value
      lrange key start end從左邊開始獲取key集合,從start開始到end結(jié)束
      lpush key value從左邊向key集合添加value
      lpop key彈出key集合最左邊的數(shù)據(jù)
      rpop key彈出key集合最右邊的數(shù)據(jù)
      llen key獲取key集合的長度
      linsert key BEFORE|AFTER pivot element操作key集合,在privot之前/后添加element
      lset key index value操作key集合,更新索引index位置的值為value
      lrem key count value操作key集合,刪除count個value值
      ltrim key start end操作key集合,截取start到end的列表值
      lindex key index操作key集合,獲取index位置的值
      brpop key seconds延遲seconds彈出
  • set

    • 用來保存多個的字符串元素,但是不允許重復(fù)元素
    • 內(nèi)部編碼:intset、hashtable
    • 注意點:smembers和lrange、hgetall都屬于比較重的命令,若元素過多存在阻塞redis的可能性,可以使用sscan完成
    • 應(yīng)用場景:社交需求、生成隨機數(shù)抽獎
    • 命令格式
      sadd key members向key集合中添加member元素
      smembers key遍歷key集合中所有元素
      srem key members刪除key集合中member元素
      spop key count從key集合中隨機彈出count個元素
      sdiff key1 key2返回key1中特有的元素(差集)
      sidiffstore dest key1 key2將差集緩存到dest中
      sinter key1 key2返回key之間的交集
      sinterstore dest key1 key2將交集緩存到dest中
      sunion key1 key2返回并集
      sunionstore dest key1 key2將并集緩存到dest中
      smove source dest member將source集合中member元素移動到dest集合
      sismember key member判斷member是否存在于key集合中
      srandmember key count隨機獲取key集合中count個元素
  • zset

    • 已排序的字符串集合,同時元素不能重復(fù)
    • 內(nèi)部編碼:ziplist、skiplist
    • 應(yīng)用場景:排行榜、點贊
    • 命令格式
      zadd key score member向key集合中添加member元素,分數(shù)為score
      zincrby key increment member向key集合中member元素score+increment
      zrange key start end [withscores]將key集合中元素升序排序,顯示分數(shù)
      zrevrange key start end [withscores]將key集合中元素倒序排序,顯示分數(shù)
      zrank key member返回member在key集合中的正序排名
      zrevrank key member返回member在key集合中的倒序排名
      zcard key返回key集合元素的個數(shù)
      zrangebysocre key min max withscores按[min,max)分數(shù)范圍正序返回key集合中的元素,顯示分數(shù)
      zrevrangebyscore key min max withscores按[min,max)分數(shù)范圍倒序返回key集合中的元素,顯示分數(shù)
      zrem key member刪除key集合中的member元素以及分數(shù)
      zremrangebyscore key min max withscores按[min,max)分數(shù)范圍刪除key集合中的元素
      zremrangebyrank key start stop刪除key集合中按照正序排列,索引在[min,max)分數(shù)范圍內(nèi)的元素
      zcount key min max按[min,max)分數(shù)范圍統(tǒng)計key集合中的元素個數(shù)
  • 全局命令

命令功能
keys pattern按照pattern模式匹配key
exists key判斷key是否存在
expire key seconds設(shè)置key的過期時間
persist key取消key的過期時間
select index切換數(shù)據(jù)庫,默認是第0個,共有0~15個
move key db從當前庫將key移動到指定DB庫
randomkey隨機返回一個key
rename key newkey將key改名為newkey
echo message打印message信息
dbsize查詢key個數(shù)
info查看redis數(shù)據(jù)庫信息
config get *查看redis所有配置信息
flushdb清空當前數(shù)據(jù)庫
flushall清空所有數(shù)據(jù)庫
  • value設(shè)計

    • 一般模式

      • 是否需要排序,需要使用zset

      • 緩存的數(shù)據(jù)是多個值還是單個值

        • 多個值:是否允許重復(fù),允許使用list,不允許使用set

        • 單個值:簡單值選擇string,對象值選擇hash

    • 取巧模式

      • 除去需要排序的需求使用zset外,其余都使用string
  • key設(shè)計

    • 唯一性,常用緩存數(shù)據(jù)的主鍵作為key

    • 可讀性,目的是為了確保見名知意

      • 普通單值,如userinfo:id1

      • 表名:主鍵名:主鍵值:列名,如userinfo:id:1:name

    • 靈活性

    • 時效性,redis key一定要設(shè)置過期時間

      • 不設(shè)置過期時間,key就為永久有效,會一直占用內(nèi)存,當key的數(shù)量過多時,就容易達到服務(wù)器內(nèi)存上限,導(dǎo)致宕機,所以一般要設(shè)置過期時間

      • key的時效性設(shè)置,必須根據(jù)業(yè)務(wù)場景進行評估,設(shè)置合理的有效時間

###?事務(wù)

  • 單個redis命令執(zhí)行是原子性的,但是redis沒有在事務(wù)上添加任何維持原子性的機制,所以redis的事務(wù)并不是原子性的

  • redis事務(wù)可以看為一組打包的批量執(zhí)行腳本,因為其不具有原子性,所以中間的某條指令失敗并不會導(dǎo)致之前的操作回滾,也不會導(dǎo)致后續(xù)操作失敗

  • redis事務(wù)可以一次執(zhí)行多個命令

    • 批量操作在發(fā)送exec命令前被放入queue中緩存

    • 接收到exec指令之后進入事務(wù)執(zhí)行,事務(wù)中任意指令出錯,不會導(dǎo)致其他指令失敗及回滾

    • 在事務(wù)執(zhí)行過程中,其他客戶端提交的命令請求不會插入到該事務(wù)執(zhí)行的命令隊列中

持久化機制

  • 快照方式(RDB,redis database)

    • 將內(nèi)存數(shù)據(jù)以快照的方式寫入到二進制文件中,默認為dump.rdb

    • 手動觸發(fā)

      • 使用save命令:會阻塞當前redis服務(wù)器,直到rdb過程完成,若內(nèi)存數(shù)據(jù)過多,會造成長時間阻塞,影響其他命令的使用

      • 使用bgsave:redis進程執(zhí)行fork指令創(chuàng)建子進程,由子進程實現(xiàn)rdb持久化

    • 自動觸發(fā)

      • 使用save相關(guān)配置,save m n,表示m秒內(nèi)數(shù)據(jù)集存在n次修改會自動觸發(fā)bgsave命令

        • save 1000 19,表示1000s內(nèi)若超過19個key被修改則發(fā)起快照保存
    • 優(yōu)點

      • rdb快照文件是一個緊湊壓縮的二進制文件,常使用于備份、全量復(fù)制等場景

      • redis加載rdb恢復(fù)數(shù)據(jù)遠遠快于aof的方式

    • 缺點

      • 無法做到實時持久化,每次bgsave都需要fork一個子進程,頻繁執(zhí)行有時間成本

      • rdb快照容易一起兼容性問題

  • 文件追加方式(AOF,append only file),不建議單獨使用

    • 是一種獨立日志的方式記錄每次寫命令,重啟時在重新執(zhí)行aof文件中命令達到回復(fù)數(shù)據(jù)的目的,解決了數(shù)據(jù)持久化的實時性問題

    • 默認未開啟,需要在配置文件中將appendonly no改為appendonly yes

    • 文件同步策略

      • appendfsync always:收到命令就立即寫到磁盤,效率慢,但是可以保證完全的持久化

      • appendfsync everysec:每秒寫入磁盤一次

      • appendfsync no:完全依賴操作系統(tǒng),一般同步周期是30s

    • 優(yōu)點

      • 數(shù)據(jù)安全性更高,配置合理最多損失1s的數(shù)據(jù)量

      • 在不小心執(zhí)行flushall命令,也可以通過aof方式恢復(fù)(刪除最后一個命令即可)

      • 當aof變的太大時,redis能夠在后臺自動重寫aof

    • 缺點

      • 相同數(shù)據(jù)量來說,aof文件體積大于rdb文件

      • aof比rdb持久化效率慢

  • 混合持久化方式(4.0之后)

    • 在寫入的時候,先將當前的數(shù)據(jù)以rdb的方式寫入文件開頭,再將后續(xù)的操作命令以aof的格式存入文件,就是以rdb做全量備份,aof作為增量備份,來提高備份的效率。這樣不僅能保證redis重啟時的速度,又可以防止數(shù)據(jù)丟失的風險

內(nèi)存淘汰機制

maxmemory參數(shù)設(shè)置內(nèi)存使用上限 ,0代表不設(shè)置上限

  • LRU:最近最少使用,從數(shù)據(jù)庫中刪除最近最少訪問的數(shù)據(jù)??梢岳斫鉃閺臄?shù)據(jù)庫中刪除最近最少訪問的數(shù)據(jù),長期不用的數(shù)據(jù),意味著再次訪問的概率也就很小了,淘汰的數(shù)據(jù)為最長時間未被使用的數(shù)據(jù),僅與時間相關(guān)

  • LFU:最不經(jīng)常使用,淘汰一段時間內(nèi),使用次數(shù)最少的數(shù)據(jù),與頻次和時間相關(guān)

  • TTL:Redis中設(shè)置了過期時間的數(shù)據(jù),當內(nèi)存不夠時,并且該數(shù)據(jù)即將過期,就會直接清除該數(shù)據(jù)

  • 隨機淘汰

  • 淘汰策略(通過maxmemory-policy配置)

    • volatile-lru:找出已經(jīng)設(shè)置過期時間的數(shù)據(jù)集,將最近最少使用的數(shù)據(jù)淘汰掉

    • volatile-ttl:找出已經(jīng)設(shè)置過期時間的數(shù)據(jù)集,將即將過期的數(shù)據(jù)淘汰掉

    • volatile-random:找出已經(jīng)設(shè)置過期時間的數(shù)據(jù)集,隨機淘汰數(shù)據(jù)

    • volatile-lfu:找出已經(jīng)設(shè)置過期時間的數(shù)據(jù)集,將一段時間內(nèi),使用次數(shù)最少的數(shù)據(jù)淘汰掉

    • allkeys-lru:與1類似,只不過為全體數(shù)據(jù)

    • allkeys-lfu:與4類似,只不過為全體數(shù)據(jù)

    • allkeys-random:與3類似,只不過為全體數(shù)據(jù)

    • no-enviction:什么都不做,直接報錯,通知內(nèi)存不足,可以保證數(shù)據(jù)不丟失(默認)

http://m.aloenet.com.cn/news/28980.html

相關(guān)文章:

  • 網(wǎng)站的圖片水印怎么做百度資源提交
  • 免費小程序開發(fā)平臺天津seo優(yōu)化公司哪家好
  • 建站網(wǎng)址平臺寧波seo快速優(yōu)化平臺
  • 淄博手機網(wǎng)站建設(shè)推廣優(yōu)化網(wǎng)站
  • 電白區(qū)建設(shè)局網(wǎng)站怎么做電商生意
  • 成都網(wǎng)站建設(shè)創(chuàng)意新手學百度競價要多久
  • 國外做家裝的網(wǎng)站有哪些短鏈接在線生成器
  • 個人網(wǎng)站建設(shè)方案書范文百度搜索推廣產(chǎn)品
  • 個人做地方民生網(wǎng)站百度推廣的步驟
  • 做電影網(wǎng)站用什么軟件叫什么名字嗎seo服務(wù)公司招聘
  • 將網(wǎng)站打造成推特最新消息今天
  • 深圳快速seo排名優(yōu)化惠州seo按天計費
  • 龍崗住房和建設(shè)局網(wǎng)站百度推廣登錄平臺客服
  • 日照網(wǎng)站推廣今日熱榜
  • 夢織網(wǎng)站短視頻seo推廣
  • 洞口做網(wǎng)站推廣信息怎么寫
  • 龍華高端網(wǎng)站設(shè)計愛站網(wǎng)關(guān)鍵詞查詢網(wǎng)站
  • 書畫網(wǎng)站 建設(shè)方案室內(nèi)設(shè)計培訓(xùn)
  • 各行各業(yè)網(wǎng)站建設(shè)獨立手機卡頓優(yōu)化軟件
  • 初中畢業(yè)想學動漫專業(yè)抖音優(yōu)化排名
  • 厚街公司網(wǎng)站建設(shè)外貿(mào)營銷型網(wǎng)站建設(shè)公司
  • 濟南地產(chǎn)行業(yè)網(wǎng)站開發(fā)友情鏈接賺錢
  • 小程序外包公司發(fā)展前景百度sem優(yōu)化師
  • 網(wǎng)站開發(fā)流程可規(guī)劃為哪三個階段新手怎么做seo優(yōu)化
  • 做網(wǎng)站培訓(xùn)商品推廣軟文范例100字
  • 重慶市建設(shè)工程招標投標交易信息網(wǎng)山西seo基礎(chǔ)教程
  • 分布式wordpress網(wǎng)頁seo
  • 外國優(yōu)秀網(wǎng)站設(shè)計青島關(guān)鍵詞優(yōu)化平臺
  • 網(wǎng)站建設(shè)做什么百度收錄查詢工具
  • 互聯(lián)網(wǎng) 政府門戶網(wǎng)站建設(shè)方案最新國際新聞50條簡短