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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Redis 实践笔记1---基础知识

發布時間:2023/12/10 数据库 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Redis 实践笔记1---基础知识 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

由于Redis的廣泛使用,加上在項目中涉及到Redis,因此會根據自己的使用和學習,寫一個Redis系列的博客,作為自己的筆記,同時也分享給大家。


What is Redis ?


看一下Redis的官網http://redis.io/對REDIS的描述:

Redis is an open source, BSD licensed, advanced?key-value cache?and?store. It is often referred to as a?data structure server?since keys can contain?strings,?hashes,?lists,?sets,sorted sets,?bitmaps?and?hyperloglogs.


關鍵詞:

Redis,開源KEY/VALUE緩存系統,數據結構服務器,數據類型。



install it and start it!


安裝redis,沒有什么特殊之處,啟動也很簡單。

如果解壓之后,沒有configure進行安裝選項的指定,直接make && makeinstall進行安裝的話,默認REDIS會安裝至/usr/local/bin下。

命令說明
./redis-server ./redis.conf我們可以把安裝路徑下的redis.conf拷貝至啟動命令路徑下。用于啟動REDIS。

./redis-cli

./redis-cli shutdown

REDIS客戶端,可以連接和關閉redis。
./redis-benchmarkREDIS性能測試。


啟動后,觀察端口占用情況:

1 2 3 4 [root@master?bin]#?./redis-server?./redis.conf [root@master?bin]#?netstat?-tnlp?|?grep?redis tcp????????0??????0?0.0.0.0:6379????????????????0.0.0.0:*???????????????????LISTEN??????4508/redis-server?*? tcp????????0??????0?:::6379?????????????????????:::*????????????????????????LISTEN??????4508/redis-server?*


REDIS的默認啟動端口就是 6379。

1 2 3 4 5 6 7 [root@master?bin]#?./redis-cli? 127.0.0.1:6379>?get?name (nil) 127.0.0.1:6379>?set?name?zhangfengzhe OK 127.0.0.1:6379>?get?name "zhangfengzhe"


Redis.conf


可以瀏覽下Redis的配置文件,下面是一些入門配置選項。


配置說明
daemonize yes啟動redis是否以后臺的方式啟動。默認是no,那么一個XSHELL客戶端啟動REDIS后會阻塞,因此可以將配置改為yes.
port 6379啟動端口。
bind 192.168.1.100REDIS的安全特性,可以允許指定IP客戶端才能訪問REDIS SERVER!
logfile "/usr/local/bin/resin.runlog"指定REDIS的運行日志
databases 16REDIS的數據是存儲在內存中的,但是也是可以持久化到數據庫中,并且REDIS將數據庫的個數默認設置為16個,默認情況下是數據庫0在使用,我們可以使用select進行切換。
save 900 1REDIS將內存中的數據保存至數據庫的策略。左邊示例就是說,900S內有一個KEY發生變化,那么STORE至DB。支持多SAVE的策略。
dbfilename dump.rdb
dir ./
數據庫文件名稱及存儲路徑
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec
REDIS的AOF機制:是否記錄操作REDIS的每一個操作至AOF文件中。




數據類型


相比Memcached只支持String類型的KEY/VALUE而言,Redis的數據類型很豐富,比如:String/List/Set/Sorted Set/Hash等。Redis所支持的類型很多,每一種類型的命令也不少,那么我們如何記憶,學習,使用呢?

我的想法:理解REDIS每一種數據類型的特點 + 官方命令手冊

在http://redisdoc.com/?有REDIS的每一個數據類型的命令列表,以及命令的使用方法說明。

數據類型說明以及一些命令
String

字符串類型,也可以存儲數字,以及任何可以序列化的數據,REDIS最大上限是1GB,遠遠大于MEMCACHED的限制。


set/setnx/get/getset/mget/mset/msetnx/ ??

【結尾是nx標示如果存在這個KEY才操作,m開頭的標示批量操作】


incr/incrby/decr/decrby

【數字的原子性的增減】


append/substr/strlen

【追加、截取、長度】

?

List

本質上LIST的每一元素是STRING類型,并且LIST就是一個雙向鏈表!

可以堆棧,即先進后出;可以隊列,即先進先出。


lpush/rpush/lpop/rpop/blpop/brpop

【b開頭的標示是此命令的阻塞版本,雖然阻塞但是避免了輪詢。】


linsert 可以方便LIST進行非頭尾的插入操作


lrange/ltrim/lset/lrem

【注意0代表第一個元素,-1代表最后一個元素】


LIST沒有命令可以直接查詢是否包含這個STRING!

LIST中元素是有序的,提供了lindex key index來返回下標為index的元素


Set

Set是String類型的無序集合,和JAVA的Set<String>特點一致。


sadd/smembers/sinter/sinterstore/sunion/sunionstore/sdiff/sdiffstore

【以store結尾的標示此命令的結果存儲至另一個SET集合中】


Set的最大特點是支持集合之間的交,并,差運算。

【這些操作很利于實現SNS需要的好友推薦,BLOG的TAG功能等】


Set還提供SISMEMBER命令來查詢SET集合是否包含這個KEY!這是LIST所不能的!

由于Set的無序性,導致取出一個元素只能利用spop/srandmember隨機取出!而sorted set解決了這一問題。



Sorted Set

Sorted Set的中的元素是String類型的,但是每一個String元素關聯了一個SCORE(權重,優先級),元素根據SCORE來進行排序。


zset需要注意的是,有一個排名,即rank;一個是分數,即score.


Hash

一個String類型的FILED/VALUE的映射表。

Hash特別適合存儲對象,占用更少的內存,而且可以很方便的存取整個對象。


hset/hmset/hget/hmget/hkeys/hvals/hgetall/hlen/hdel/hexists...



KEY

exists key
0 or 1?
del key
type key
none/string/list/set/...
keys pattern符合pattern的所有KEY
expire key seconds設置KEY的過期時間



本文轉自zfz_linux_boy 51CTO博客,原文鏈接:http://blog.51cto.com/zhangfengzhe/1656888,如需轉載請自行聯系原作者


總結

以上是生活随笔為你收集整理的Redis 实践笔记1---基础知识的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。