redis

1. 安装redis

yum install redis 或wget官网的最新版本

配置文件默认在/etc/redis.conf


redis-benchmark 性能测试工具

redis-check-aof appendonly.aof日志校验工具

redis-check-dump dump.rdb日志校验工具

redis-cli redis 客户端

redis-server redis服务器端


2. redis服务的启动和redis客户端的连接

启动:redis-server /etc/redis.conf

cli连接:redis-cli 或者telnet ip port, 不建议用telnet,因为没有智能命令行


3. redis配置文件全解

==基本配置

daemonize no 是否以后台进程启动

databases 16 创建database的数量(默认选中的是database 0)

save 900 1    #刷新快照到硬盘中,必须满足两者要求才会触发,即900秒之后至少1个关键字发生变化。

save 300 10  #必须是300秒之后至少10个关键字发生变化。

save 60 10000 #必须是60秒之后至少10000个关键字发生变化。

stop-writes-on-bgsave-error yes    #后台存储错误停止写。

rdbcompression yes    #使用LZF压缩rdb文件。

rdbchecksum yes    #存储和加载rdb文件时校验。

dbfilename dump.rdb    #设置rdb文件名。

dir ./    #设置工作目录,rdb文件会写入该目录。


==主从配置

slaveof <masterip> <masterport> 设为某台机器的从服务器

masterauth <master-password>  连接主服务器的密码

slave-serve-stale-data yes  # 当主从断开或正在复制中,从服务器是否应答

slave-read-only yes #从服务器只读

repl-ping-slave-period 10 #从ping主的时间间隔,秒为单位

repl-timeout 60 #主从超时时间(超时认为断线了),要比period大

slave-priority 100    #如果master不能再正常工作,那么会在多个slave中,选择优先值最小的一个slave提升为master,优先值为0表示不能提升为master。

repl-disable-tcp-nodelay no #主端是否合并数据,大块发送给slave

slave-priority 100 从服务器的优先级,当主服挂了,会自动挑slave priority最小的为主服


===安全

requirepass foobared # 需要密码

rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52 #如果公共环境,可以重命名部分敏感命令 如config


===限制

maxclients 10000 #最大连接数

maxmemory <bytes> #最大使用内存

maxmemory-policy volatile-lru #内存到极限后的处理

volatile-lru -> LRU算法删除过期key

allkeys-lru -> LRU算法删除key(不区分过不过期)

volatile-random -> 随机删除过期key

allkeys-random -> 随机删除key(不区分过不过期)

volatile-ttl -> 删除快过期的key

noeviction -> 不删除,返回错误信息

#解释 LRU ttl都是近似算法,可以选N个,再比较最适宜T踢出的数据

maxmemory-samples 3


====日志模式

appendonly no #是否需要AOF日志

appendfsync no # 系统缓冲,统一写,速度快

appendfsync always # 系统不缓冲,直接写,慢,丢失数据少

appendfsync everysec #折衷,每秒写1次

no-appendfsync-on-rewrite no #为yes,则其他线程的数据放内存里,合并写入(速度快,容易丢失的多)

auto-AOF-rewrite-percentage 100 当前aof文件是上次重写是大N%时重写

auto-AOF-rewrite-min-size 64mb aof重写至少要达到的大小


====慢查询

slowlog-log-slower-than 10000 #记录响应时间大于10000微秒的慢查询

slowlog-max-len 128  # 最多记录128条


====服务端命令

time  返回时间戳+微秒

dbsize 返回key的数量

bgrewriteaof 重写aof

bgsave 后台开启子进程dump数据

save 阻塞进程dump数据

lastsave

slaveof host port 做host port的从服务器(数据清空,复制新主内容)

slaveof no one 变成主服务器(原数据不丢失,一般用于主服失败后)

flushdb  清空当前数据库的所有数据

flushall 清空所有数据库的所有数据(误用了怎么办?)

shutdown [save/nosave] 关闭服务器,保存数据,修改AOF(如果设置)

slowlog get 获取慢查询日志

slowlog len 获取慢查询日志条数

slowlog reset 清空慢查询

info []

config get 选项(支持*通配)

config set 选项 值

config rewrite 把值写到配置文件

config restart 更新info命令的信息

debug object key #调试选项,看一个key的情况

debug segfault #模拟段错误,让服务器崩溃

object key (refcount|encoding|idletime)

monitor #打开控制台,观察命令(调试用)

client list #列出所有连接

client kill #杀死某个连接  CLIENT KILL 127.0.0.1:43501

client getname #获取连接的名称 默认nil

client setname "名称" #设置连接名称,便于调试


====连接命令===

auth 密码 #密码登陆(如果有密码)

ping #测试服务器是否可用

echo "some content" #测试服务器是否正常交互

select 0/1/2... #选择数据库

quit #退出连接


4. redis 常用命令

见官网 https://redis.io/commands

常用

select move

set mset get mget getset keys rename renamenx randomkey exist type

ttl expire persist

incr incrby decr decrby

链表

lpush rpush lrange lrem(删特定值) ltrim(截取指定范围的值) lindex(获取指定index的值) llen linsert

rpop|lpush task job(实现原子的将task任务队列移到处理任务中,并保证不丢失每个task)

字节操作

bitcount bitfield bitop bitpos getbit setbit

用位图法统计用户登录情况,节省内存和空间

无序集合

sadd smembers srem(删指定值) spop(随机删除一个值) sismember scard(获取元素个数) 

smove(在2个集合中移动元素) sinter(求交集) sunion(求并集) sdiff(求差集)

有序集合 

zadd zrange。。。。。。 能实现部分聚合运算和类sql的运算

hash

hset hmset hgetall hdel hlen hexists hinrby

事务操作---->订票系统

watch multi exec discard unwatch

pub/sub发布订阅模式-----> 在线聊天,消息推送

publish subscribe psubscribe(同时监听多个频道)


5. 主从配置方案

1主2从

master:

关闭dump.rdb开启aof

slave:

指定slave-of

某个slave开dump.rdb功能

配置从为只读模式,否则出现主从不同步问题


6. 运维相关

6.1 运维常用命令

TIME 查看时间戳与微秒数

DBSIZE 查看当前库中的key数量

BGREWRITEAOF 后台进程重写AOF

BGSAVE       后台保存rdb快照

SAVE         保存rdb快照

LASTSAVE     上次保存时间

SLAVEOF      设为slave服务器

FLUSHALL     清空所有db

FLUSHDB      清空当前db

SHUTDOWN[""|save|nosave]     断开连接,关闭服务器

SLOWLOG   显示慢查询

INFO      显示服务器信息

CONFIG GET 获取配置信息

CONFIG SET 设置配置信息

MONITOR    打开控制台

SYNC       主从同步

CLIENT LIST 客户端列表

CLIENT KILL 关闭某个客户端

CLIENT SETNAME 为客户端设置名字

CLIENT GETNAME 获取客户端名字


6.2 运维查看redis状态

1: 内存

#Memory

used_memory:859192

数据结构的空间

used_memory_rss:7634944

实占空间

mem_fragmentation_ratio:8.89

前2者的比例,1.N为佳

2:

主从复制

#Replication

role:slave

master_host:192.168.1.128

master_port:6379

master_link_status:up

3:持久化

#Persistence

rdb_changes_since_last_save:0

rdb_last_save_time:1375224063

4:fork耗时

#Status

latest_fork_usec:936  上次持久化花费微秒

5:慢日志

config

get/set slowlog-log-slower-than

CONFIG

get/SET slowlog-max-len

slow

log get 获取慢日志


7. redis key 设计技巧

7.1 基本设计

1. 把表名转换为key前缀如, tag:

2: 第2段放置用于区分区key的字段--对应mysql中的主键的列名,如userid

3: 第3段放置主键值,如2,3,4...., a , b ,c

4: 第4段,写要存储的列名

7.2 类似索引设计

需要建索引的定义在前面

之后在在7.1中进行详细查询


8. redis 参考书

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容