redis之进阶
redis之进阶
redis介绍
redis的功能特性
1,高速读写
2,数据类型丰富
3,支持持久化
4,多种内存分配及回收策略
5,支持事务
6,消息队列、redis用的多的还是发布-订阅模式
7,支持高可用
8,支持分布式分片集群
linux操作系统是怎么分配内存的?
把内存分为三大块
PSS
page cache
anno page:程序之间进行交互的时候。。。。#匿名页
linux操作系统以page进行分配内存,page大小默认4kb
slab allocator 内存页的划分
怎么保证使用连续的内存
slab allocator
redis的优势
1、redis在单用户(单线程)多并发读写的性能高
2、在多用户(多线程)少读写时memache更优
3、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 foo
基本的配置文件
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 |
>>> from redis.sentinel import Sentinel |
redis之进阶的更多相关文章
- Linux-基础学习(六)-Redis的进阶学习
1. redis的进阶操作 1.1 redis的订阅操作 发布订阅的命令 PUBLISH channel msg 将信息 message 发送到指定的频道 channel SUBSCRIBE chan ...
- ssm 整合 redis(进阶教程)
最后我建议大家使用 Spring StringRedisTemplate 配置,参阅: http://blog.csdn.net/hanjun0612/article/details/78131333 ...
- Redis高级进阶
目录 本章目标 Redis配置文件 Redis存储 Redis事务 Redis发布订阅 Redis安全 本章目标 Redis配置文件 Redis的存储 Redis的事务 Redis发布订阅 Redis ...
- 06 python操作MySQL和redis(进阶)
python操作mysql.redis 阶段一.mysql事务 主要用于处理操作量大,复杂度高的数据.比如说,在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息, ...
- 05 redis(进阶)
redis 阶段一.认识redis 1.什么是redis Redis是由意大利人Salvatore Sanfilippo(网名:antirez)开发的一款内存高速缓存数据库.Redis全称为:Remo ...
- Redis高级进阶(二)
一.消息通知 在一些网站上,经常会有一些发布/订阅或者邮件订阅的功能,尤其一些博客上.其实这种问题很常见,当页面需要进行如发送邮件.复杂的计算时会阻塞页面的渲染.为了避免用户等待太久,应该使用其他进程 ...
- Redis高级进阶(一)
一.redis中的事务 在关系型数据库中事务是必不可少的一个核心功能,生活中也是处处可见,比如我们去银行转账,首先需要将A账户的钱划走,然后存到B账户上,这两个步骤必须在同一事务中,要么都执行,要么都 ...
- Redis入门--进阶详解
Redis NoSql入门和概述 入门概述 互联网时代背景下大机遇,为什么用nosql 1.单机MySQL的美好年代 在90年代,一个网站的访问量一般都不大,用单个数据库完全可以轻松应付,在那个时候, ...
- KV型内存数据库Redis
Redis是开源的高性能内存Key-Value数据库, 可以提供事务和持久化支持, 并提供了TTL(time to life)服务. Redis采用单线程数据操作+非阻塞IO的模型,非阻塞IO提供了较 ...
随机推荐
- ubuntu 14.4 下 普通sudo无密码
用户是test,要设置为 sudo无密码 visudo 最后一行 加上: %test ALL=NOPASSWD:ALL 然后 ctrl + x 进行保存,会提示 Y or N,输入 y 即可. ...
- RQNOJ 169 最小乘车费用:水dp
题目链接:https://www.rqnoj.cn/problem/169 题意: 给出行驶1-10公里的费用(所有车一样),可以倒车,问行驶n公里的最小费用. 题解: 大水题... (=´ω`=) ...
- the art of seo(chapter eight)
How Social Media and User Data Play a Role in Search Results and Rankings ***Correlation Between Soc ...
- ES 相似度算法设置(续)
Tuning BM25 One of the nice features of BM25 is that, unlike TF/IDF, it has two parameters that allo ...
- HTml js 生成图片
<script type="text/javascript"> function $(id) { return document.getElementById(id); ...
- 打开关闭tomcat的目录浏览功能
目录浏览功能 conf/web.xml中init-param中有对于listing的定义,设置为true即可实现tomcat的目录浏览: tomcat的管理用户设置 conf/tomcat-users ...
- websocket之二:WebSocket编程入门
一.WebSocket客户端 websocket允许通过JavaScript建立与远程服务器的连接,从而实现客户端与服务器间双向的通信.在websocket中有两个方法: 1.send() 向远程服务 ...
- 五 python 发送邮件
需求: 系统中使用一个邮箱(这里用QQ)给其他邮箱发消息,用python完成,步骤如下: 1: 开启QQ邮箱的SMTP服务.设置-> 账号 2: 开启邮箱服务:这个需要手机验证,最后会给你一个授 ...
- Python中正则匹配使用findall时的注意事项
在使用正则搜索内容时遇到一个小坑,百度搜了一下,遇到这个坑的还不少,特此记录一下. 比如说有一个字符串 "123@qq.comaaa@163.combbb@126.comasdf111@a ...
- [spoj694&spoj705]New Distinct Substrings(后缀数组)
题意:求字符串中不同子串的个数. 解题关键:每个子串一定是某个后缀的前缀,那么原问题等价于求所有后缀之间的不相同的前缀的个数. 1.总数减去height数组的和即可. 注意这里height中为什么不需 ...