redis支持的數據類型:java
- 字符串(string)
- 哈希表(hash)
- 列表(list)
- 集合(set)
- 有序集合(zset)
- 位圖(bitmaps)
- HyperLoglogs、GEO等
.redis
redis特性以下:vim
- 速度快:基於內存工做,使用離OS最近的C語言編寫,使用單線程架構,預防了多線程可能產生的競爭問題。
- 基於鍵值對的數據結構服務器:redis中的值不單單能夠是字符串,關於其支持的數據類型已經在文章開頭列出來了。
- 豐富的功能:
- 1.鍵過時功能,用來實現緩存。
- 2.發佈訂閱功能,用來實現消息系統。
- 3.支持Lua腳本,能夠利用Lua創造出新的Redis命令。
- 4.簡單的事務功能,能在必定程度上保證事務的特性。
- 5.提供了流水線(pipeline)功能,這樣客戶端能將一批命令一次性傳到redis,較少網絡開銷。
- 簡單穩定。
- 客戶端語言多:支持java、PHP、Python、C、C++、Nodejs等。
- 數據持久化:redis工做在內存中,支持兩種持久化方式:RDB、AOF來寫入到硬盤中。
- 主從複製:Redis提供了複製功能,實現了多個相同數據的redis副本。
- 高可用和分佈式:Redis從2.8版本正式提供了高可用實現redis Sentinel,它可以保證Reids節點的故障發現和故障自動轉移,從3.0版本提供了分佈式實現Redis
- Cluster,他是redis真正的分佈式實現,提供了高可用、讀寫和容量的擴展性。
.緩存
redis的7個使用場景:服務器
- 緩存。
- 計數器。
- 隊列。
- 位操做(大數據處理)。
- 分佈式鎖與單線程機制。
- 最新列表。
- 排行榜。
一 、 部署redis 5.0
一、下載並解壓網絡
[root@redis ~]# wget http://download.redis.io/releases/redis-5.0.5.tar.gz [root@redis ~]# tar zxf redis-5.0.5.tar.gz [root@redis ~]# cd redis-5.0.5/ [root@redis redis-5.0.5]# make
二、準備工做目錄及redis所需文件數據結構
[root@redis redis-5.0.5]# mkdir -p /usr/local/redis/{bin,conf,data} #建立目錄 [root@redis redis-5.0.5]# cp src/redis* /usr/local/redis/bin/ #拷貝命令 [root@redis redis-5.0.5]# cp redis.conf /usr/local/redis/conf/ # 拷貝配置文件 [root@redis redis-5.0.5]# cd /usr/local/redis/bin/ #進入命令目錄下,刪除沒必要要的文件 [root@redis bin]# rm -rf *.c [root@redis bin]# rm -rf *.h [root@redis bin]# rm -rf *.o [root@redis bin]# cd ../conf/ [root@redis conf]# cp redis.conf{,.bak} #備份配置文件 [root@redis conf]# egrep -v '^$|^#' redis.conf.bak > redis.conf #過濾註釋及空行以便生成新的配置文件
三、修改配置文件多線程
[root@redis conf]# vim redis.conf #更改配置文件以下 bind 0.0.0.0 #更改位監聽全部地址 port 6379 daemonize yes #啓用守護進程 pidfile /usr/local/redis/data/redis_6379.pid #指定pid文件 logfile "/usr/local/redis/data/redis.log" #指定日誌文件 #添加命令路徑到全局命令搜索路徑下 [root@redis bin]# echo 'export PATH=${PATH}:/usr/local/redis/bin' >> /etc/profile [root@redis bin]# source /etc/profile [root@redis bin]# redis-server -v #查看redis版本 Redis server v=5.0.5 sha=00000000:0 malloc=jemalloc-5.1.0 bits=64 build=94d37e8f5f58aed5
四、啓動redis架構
[root@redis bin]# redis-server /usr/local/redis/conf/redis.conf #啓動redis [root@redis bin]# ss -anpt | grep 6379 #肯定端口在監聽 LISTEN 0 128 *:6379 *:* users:(("redis-server",pid=66992,fd=6)) [root@redis bin]# redis-cli #本機可直接使用redis-cli進行登陸 127.0.0.1:6379> [root@redis bin]# redis-cli -h 192.168.171.134 -p 6379 #若遠端登陸,則須要指定IP及端口 192.168.171.134:6379>
五、查看redis日誌,解決warning問題分佈式
[root@redis bin]# cat /usr/local/redis/data/redis.log #查看redis日誌
會發現redis在啓動時,報有如下幾個warning:
接下來就解決這些warning問題(若是不解決這些問題,redis的性能會受到很大的影響)。
1)解決最大打開文件數問題
[root@redis ~]# ulimit -n #查看當前值 1024 [root@redis ~]# vim /etc/security/limits.conf #在文件末尾寫入下面內容 * - nofile 10240 #修改後,從新登陸便可生效,從新登陸後再次查看當前值 [root@redis ~]# ulimit -n 10240
2)解決TCP積壓值太小問題
[root@redis ~]# echo "net.core.somaxconn = 1024" > /etc/sysctl.d/redis.conf [root@redis ~]# sysctl -p /etc/sysctl.d/redis.conf #刷新使其生效 net.core.somaxconn = 1024
3)解決內存方面warning問題
[root@redis ~]# echo "vm.overcommit_memory = 1" >> /etc/sysctl.d/redis.conf [root@redis ~]# sysctl -p /etc/sysctl.d/redis.conf #刷新使其生效 net.core.somaxconn = 1024 vm.overcommit_memory = 1
4)解決其餘warning問題
[root@redis ~]# echo never > /sys/kernel/mm/transparent_hugepage/enabled #上述指令只是當前生效,重啓後就會失效,接下來改成永久生效 [root@redis ~]# echo 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' >> /etc/rc.local [root@redis ~]# chmod +x /etc/rc.d/rc.local
至此,reboot重啓服務器也好,只是重啓redis服務也好,都不會再報哪些warning問題了。以下: