redis是什麼:面試
安裝redis
wget http://download.redis.io/releases/redis-5.0.4.tar.gz tar xzf redis-5.0.4.tar.gz cd redis-5.0.4 make
缺乏make包, 則須要經過 sudo apt-get install make 安裝數據庫
make報錯 /bin/sh: cc: command not found 缺乏gcc包, 經過 sudo apt-get install gcc安全
若是報錯 fatal error: jemalloc/jemalloc.h: No such file or directory 則使用 make MALLOC=libc 編譯性能優化
可使用命令 make test 測試. 報錯 You need tcl 8.5 or newer in order to run the Redis test 則須要安裝tcl包.數據結構
安裝方法以下:架構
wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz sudo tar xzvf tcl8.6.1-src.tar.gz -C /usr/local/ cd /usr/local/tcl8.6.1/unix/ sudo ./configure sudo make sudo make install
安裝完成後運行 make test 命令成功。併發
須要安裝到指定目錄, 則可使用 make install PREFIX=/mnt/d/redis 注意添加配置文件分佈式
啓動命令微服務
啓動 sh /redis-server ../conf/redis.conf
之後臺進程的方式啓動須要修改 redis.conf 文件的 daemonize=yes
客戶端鏈接 sh /redis-cli -h 192.168.1.123 -p 6379
配置文件中的 bind 用來綁定服務端的ip, 爲了安全,默認不容許外網訪問
默認保護模式 protect-mode=yes
多數據支持
默認支持16個數據庫, databases=16 , 默認使用的是DB 0 . redis數據庫不支持自定義名稱, 且不能單獨作受權, 各個數據庫之間並不是徹底隔離. flushall 命令能夠清空redis中全部的數據.
select 3 轉到索引爲3的數據庫
使用命令
keys prifix 查找到全部開頭爲prifix的鍵, pattern 可使用[? [] ]匹配
EXISTS key 是否存key
type key 獲取數據結構
字符類型
key的最大存儲爲512M.
set key value 比較重要的 setnx
get key
incr key 遞增值 incrby key [step] 遞增指定的step
strlen key 得到長度
mget key1 key2 key3 批量獲取多個key的值
set key1 value1 key2 value2 批量設置多個鍵值
key的設計能夠參看阿里的規範, 例如 業務名:表名:id
列表類型
lpush key value 左邊push數據,對應的是 rpush
lpop key 獲取數據, 同時數據被移除,對應的是 rpop
llen key 列表長度
lrange key start stop 獲取片斷, start=-1 表示從頭,stop=-1表示到結尾
lrem key count value 刪除
lset key index value 設置索引的值
散列類型
不支持數據類型嵌套, 好比hash中存儲一個list.
hset key field value hget key field hmset key field1 value1 field2 value2 hmget key field1 field2 hgetall key hexists key field hincryby hsetnx hdel key field
集合類型
和list相比, 不能有重複元素, 且是無序的
sadd key member... smembers key sdiff key1 key2 sunion key1 key2
有序集合
zadd key score member zrange key start stop withscores
能夠用來作排名統計
redis的事務
比較雞肋, 不建議使用, 有時候不能回滾
multi 開啓事務;
set get... 等操做爲具體的事務操做
exec 提交事務
過時時間
expire key timeout 設置超時時間
ttl key 得到key過時時間
發佈訂閱
publish channel message
subscribe channel
分佈式鎖
可以使用 setnx 實現
感謝你耐心看完了文章…
關注做者,我會不按期在思否分享Java,Spring,MyBatis,Redis,Netty源碼分析,高併發、高性能、分佈式、微服務架構的原理,JVM性能優化、分佈式架構,BATJ面試 等資料…