redis介绍
redis的功能特性
1,高速读写 2,数据类型丰富 3,支持持久化 4,多种内存分配及回收策略 5,支持事务 6,消息队列、redis用的多的仍是发布-订阅模式 7,支持高可用 8,支持分布式分片集群
linux操做系统是怎么分配内存的?mysql
把内存分为三大块 PSS page cache anno page:程序之间进行交互的时候。。。。#匿名页 linux操做系统以page进行分配内存,page大小默认4kb slab allocator 内存页的划分
怎么保证使用连续的内存linux
slab allocator
redis的优点
一、redis在单用户(单线程)多并发读写的性能高 二、在多用户(多线程)少读写时memache更优 三、redis是一个单核的管理机制,生产中通常是,单机多实例的框架
redis的使用
下载 安装 解压 tar -zxvf redis-3.2.6.tar.gz cd redis-2.6.0 make #编译安装 yum install gcc* cd /application/redis-3.2.6/src ./redis-server & #启动redis服务端 ,&后台运行,否则一直占用端口 ps -ef |grep redis #查看是否启动 ./redis-cli #链接服务器
使用redis
set foo bar
get fooredis
基本的配置文件 vim /etc/redis.conf #去编辑redis.conf文件 #添加配置 daemonize yes port 6379 dbfilename dump.rdb dir "/application/data/6379" logfile /var/log/redis.log ###### mkdir -p /application/data/6379 ps -ef |grep redis ./redis-server /etc/redis.conf /application/redis-3.2.6/src/redis-server /etc/redis.conf #为了避免用每次都切进去,在环境变量里面设置一下 cd /root vim .bash_profile PATh 添加 :/application/redis-3.2.6/src :wq保存 配置生效 source .bash_profile redis-cli 配置完成以后,能够直接在命令行调用redis命令 例如: redis-cli shutdown 或者 redis-server /etc/redis.conf #安全控制(也在配置文件里面设置) bind 10.0.0.200 #绑定ip10字段 requirepass root #没有用户只有密码,密码为root redis-cli shutdown redis-server /etc/redis.conf 设置完成以后须要换种方式打开: redis-cli -h 10.0.0.200 -a root #改完配置文件每次都须要重启,不用每次都重启,在线变动配置: 获取当前配置 CONFIG GET * 变动运行配置 CONFIG SET loglevel 'notice' 修改密码 CONFIG SET requirepass "123" CONFIG GET requirepass 在线修改的配置,下次登陆生效,可是重启以后配置会丢失 #Python连接redis import redis ....
redis的数据持久化
RDB持久化:快照,只记录一个时刻内存数据状态(快照记录某一时刻的数据) AOF持久化:只追加日志文件的方式,记录了redis里面全部的修改命令 RDB记录某一时刻的,还能够用作备份 AOF比较安全,可是比较啰嗦,每次都把全部的搜保存下来了 #若是配置持久化功能 方式一: RDB 持久化配置:仍是修改配置文件 dbfilename dump.rbd dir '/application/data/6379' save 900 1 900秒内有一个更改 save 300 10 300秒内有10个更改 save 60 10000 60秒内有10000个更改 #也能够设置配置作持久化 方式二: set foo bar save 或者 bgsave #手工触发持久化 #配置扩展 stop-writes-on-bgsave-error yes rdbcompression yes rdbchecksum yes #AOF 配置 appendonly yes applendfsync every
redis数据类型
计数器 incr fensi ##你点击一下增长一下,刷点击量 incrby fensi 10000 DECR fensi #递减 DECRBY fensi 20 set foo bar set foo ex 10 hset stu(表) id(列) 100 hmset stu id 100 name zhangsna lpush pengyouquan 'today is nice day' lpush pengyouquan 'today is bad day' lpush pengyouquan 'today is a day' lpop pengyouquan #删除最后一条 lrange pengyouquan 0 -1 #查看全部 有序集合:像是排行榜
发布订阅模式
发布订阅模式(中间桥梁:频道):朋友圈是很好的证实。先关注你就能看到 开两个端口 PUBLISH weibo hello 先订阅某个频道 SUBSCRIBE weibo 订阅weibo一个频道,subscribe PSUBSCRIBE * 一次性订阅多个频道(广告类) PSUBSCRIBE it.* 一次性订阅多个和it相关的频道 退出就取消订阅了
redis的事物管理
redis使用multi开启事物 discard 撤销 exec 退出 redis 中的锁机制 mysql的悲观锁:我在作操做的时候,你别和我抢, redis的乐观锁:查看一下,
redis的一些管理命令
Info Clinet list 客户端链接的情况以及对系统的使用状况 Client kill ip:port config get * CONFIG RESETSTAT 重置统计 CONFIG GET/SET 动态修改 Dbsize FLUSHALL 清空全部数据 select 1 FLUSHDB 清空当前库 MONITOR 监控实时指令
主从复制
1 |
假如说你访问redis呢,访问不了呢,数据查看不了了,怎么办? |
Python sentinel
1 |
|