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,如需轉載請自行聯系原作者


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/256705.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/256705.shtml
英文地址,請注明出處:http://en.pswp.cn/news/256705.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[操作系統實驗lab4]實驗報告

實驗概況 在開始實驗之前&#xff0c;先對實驗整體有個大概的了解&#xff0c;這樣能讓我們更好地進行實驗。 我們本次實驗需要補充的內容包括一整套以sys開頭的系統調用函數&#xff0c;其中包括了進程間通信需要的一些系統調用如sys_ipc_can_recv等&#xff0c;以及補充完成f…

設計模式C++實踐

1、單例模式 1&#xff09;餓漢士單例模式 2&#xff09;懶漢士單例模式

js中怎么寫自執行函數

<!DOCTYPE html><html lang"en"><head> <meta charset"UTF-8"> <title></title> <script type"text/javascript"> /** * Window 是一個非常重要的對象 */ c…

最優化課堂筆記06-無約束多維非線性規劃方法(含重點)

引言 6.1 坐標輪換法&#xff08;工程上基本不用&#xff0c;效率低不適用高維&#xff09; 6.1例子&#xff1a;主要是對最優步長alpha的確定 6.2 最速下降法&#xff08;相鄰兩次的搜索方向互相垂直&#xff09; 6.2例子 求解法一 注&#xff1a;最速下降法與坐標輪換法的區…

WINHEX的比較、同步功能加上NTFS對稀疏文件的支持

[原創]如何快速地分析RAID信息在每塊盤上的記錄方式&#xff0c;如何快速地確定系統的實質讀寫操作。WINHEX是一個非常好的軟件&#xff0c;通過其比較和同步功能加上NTFS對稀疏文件的支持&#xff0c;看看怎么實現上述設想。。。我們會有這樣的需求&#xff1a;在RAID上的幾塊…

Z表數據EXCEL導入

很多項目都有這種需求&#xff0c;雖然別人用的各有不同&#xff0c;不過閑來無事&#xff0c;還是自己搞了一個出來。基于EXCEL的導入。 *&---------------------------------------------------------------------* *& Report ZLY_UPLOAD_TABLE *& *&------…

運動軌跡規劃算法專欄

1、全局局部路徑規劃&#xff0c;解決低速簡單障礙物環境的路徑規劃功能

現代制造工程課堂筆記06-集成電路制造工程

中國主要是進行了集成電路的下游環節&#xff0c;即是封裝與測試

悖論:早期互聯網項目,是否需要技術含量?

在自己創業、看別人創業、和別人一起創業的過程中&#xff0c;一直有個“悖論”困惑著我&#xff0c;讓我很不舒服。因為如鯁在喉&#xff0c;所以不吐不快。悖論 早期互聯網項目&#xff0c;通常來說&#xff0c;技術難度不算大&#xff1f; 從創業者角度來講&#xff0c;最…

資源打包后項目中的文件

一.資源打包Assets.car1.如果部署版本>8.0,并且圖片被放入到Images.xcassets,圖片打包之后會被放到Assets.car,并且是有對圖片資源進行壓縮.2.如果部署版本<8.0,并且圖片被放入到Images.xcassets,圖片會被放到MainBundle里面,并且不會對圖片進行壓縮處理.3.如果圖片是直接…

現代制造工程-考試復習02

1.說明&#xff1a;標有重點的是會出簡答題或者計算題&#xff0c;而未標注的則是會出選擇題和填空題 2.題型&#xff1a;判斷、選擇、簡答、論述

VINS狀態估計篇-視覺sfm初始化

1、通過判斷當前幀和滑動窗口中&#xff0c;平均視差>30

TP_字母函數

1. A() A函數用于實例化控制器 格式&#xff1a;[資源://][模塊/]控制器 A($name,$layer,$level) param string $name 資源地址 param string $layer 控制層名稱 param integer $level 控制器層次 return Controller|false 2. B() 執行某個行為 B($name,$tag,&$paramsNULL)…

父div高度和寬度的應用

這是我自己在仿騰訊首頁時遇到的布局問題&#xff0c;在此記錄&#xff0c;如果有錯&#xff0c;歡迎指正。 首先是對齊問題&#xff0c;可以把父div的高度設置為0&#xff0c;然后調整padding值&#xff0c;這樣可以批量調整子div們和其他父div的相對高度。 這是父div的樣式 .…

flume package遇到的問題

flume打包遇到的一些問題 1.ipc兼容性問題&#xff0c;線上使用2.3.0的hdfs&#xff0c;但是打包時默認為1.2.1的 123408 Apr 2015 19:38:25,122 WARN [SinkRunner-PollingRunner-DefaultSinkProcessor] (org.apache.flume.sink.hdfs.HDFSEventSink.process:455) - HDFS IO e…

有限元筆記06-三維實體單元

多個四面體單元組合起來可以形成六面體

python讀取excle表格數據,將數據編輯到圖像上工程

這里寫目錄標題一級目錄&#xff1a;python讀取excel表格內容二級目錄&#xff1a;python如何分割字符串三級目錄&#xff1a;python如何在圖像的相應位置編輯文字或者字母、數字一級目錄&#xff1a;python讀取excel表格內容 二級目錄&#xff1a;python如何分割字符串 三級…

暑假計劃

保研的事還是要聽天由命。日常拜錦鯉大王。 生產實習呢....估計也是要水過去。等塵埃落定后再補補這些項目吧。 字符串&#xff1a; 1.后綴數組專題&#xff08;知乎專欄&#xff09; 2.熟練AC自動機 dp&#xff1a; 3.狀壓dp輪廓線dp入門 4.數位dp 數學&#xff1a; 5.FFT容斥…

使用junit測試用例

通常只會使用junit測試非main方法&#xff0c;在我眼里就是程序入口實現而已。今天&#xff0c;發現原來可以測試類。 針對mybatis練習。在需要測試的UserDaoImpl類上右鍵&#xff0c;新建一個junit case,位置可以放到新創建的source folder :test里面。 選擇需要測試的方法&am…

H5頁面適配所有iPhone和安卓機型的六個技巧

1、viewport 簡單粗暴的方式&#xff1a; <meta name"viewport" content"width320,maximum-scale1.3,user-scalableno"> 直接設置viewport為320px的1.3倍&#xff0c;將頁面放大1.3倍。 為什么是1.3&#xff1f; 目前大部分頁面都是以320px為基準的布…