redis第一篇

文章目录

一、 Redis介绍安装配置

1、安装

#下载
wget http://download.redis.io/releases/redis-5.0.7.tar.gz
#解压
tar -xzf redis-5.0.7.tar.gz
#建立软连接
ln -s redis-5.0.7 redis
cd redis
make&&make install
#在src目录下可以看到
#redis-server--->redis服务器
#redis-cli---》redis命令行客户端
#redis-benchmark---》redis性能测试工具
#redis-check-aof--->aof文件修复工具
#redis-check-rdb---》rdb文件检查工具
#redis-sentinel---》sentinel服务器,哨兵
#redis作者对windows维护不好,window自己有安装包

# 在任意路径执行redis-server 都能运行起redis服务
	-把可执行文件加入环境变量
    	-用户变量(用户家路径下:.bash_profile)
        -系统变量
    -把可执行文件在usr路径下建立软链接

####卸载redis
# 1、查看redis进程;
    ps aux|grep redis
    # 2、kill掉进程;
    kill 进程id
    # 3、进入到redis目录
    cd /usr/local/
    # 4、删除redis对应的文件
    rm -f /usr/local/redis/bin/redis*
    rm -f /usr/local/bin/redis*
    # 5、删除对应的文件
    rm -rf redis
# 简单启动服务
	redis-server 
# 动态参数启动
	redis-server --port 6380
# 重点:通过配置文件启动
	#配置文件启动(6379对应手机按键MERZ,意大利女歌手Alessia Merz的名字)
    #####通过redis-cli连接,输入config get * 可以获得默认配置
    #在redis目录下创建config目录,copy一个redis.conf文件
    #daemonize--》是否是守护进程启动(no|yes)
    #port---》端口号
    #logfile--》redis系统日志
    #dir--》redis工作目录
    bind 0.0.0.0
    daemonize NO
    protected-mode no
    requirepass 123456
# 普通客户端链接
	redis-cli -h ip -p port
	redis-cli 
# 带密码的
    # 方式一
    redis-cli -h 127.0.0.1  -p 6370 -a 123456
    # 方式二
    redis-cli -h 127.0.0.1  -p 6370
    先登陆,再通过auth输入密码
    
# 注意
CONFIG GET *   一百多对建值
CONFIG SET maxmemory 128M  # 设置最大使用的内存
CONFIG set requirepass 123456  # 设置密码
CONFIG REWRITE  # 保存到配置文件

2、 API的使用

http://liuqingzheng.top/db/Redis%E7%B3%BB%E5%88%97/01-Redis%E7%B3%BB%E5%88%97%E4%B9%8B-API%E7%9A%84%E4%BD%BF%E7%94%A8/

三、高级用法(优化相关)

1、慢查询相关

# 慢查询相关
慢查询:如果查询时间超过了配置时间
# redis发现变慢了,怎么排除
分析有哪些慢查询命令,避免掉

2、pipeline与事务

pipeline每次只能作用在一个Redis的节点上(如果做了集群,就没有pipline了)
# redis有没有事务啊
通过pipline模拟实现事务
   -redis只能实现乐观锁:https://www.cnblogs.com/liuqingzheng/p/9997092.html
    	# 2 模拟乐观锁
        # 在开启事务之前,先watch
        wathc age
        multi
        decr age
        exec

        # 另一台机器
        mutil
        decr age
        exec  # 先执行,上面的执行就会失败(乐观锁,被wathc的事务不会执行成功)

3、悲观锁和乐观锁

# 悲观锁
认为本次修改操作,别人也会去修改操作,所以一开始就加锁,执行完之后加把锁释放,在此之间别人修改不了
# 乐观锁
认为本次修改不会被别人修改掉,在操作的时候判断值有没有被改掉,改掉就不执行了,没改掉就继续执行
# 总结
悲观锁永远会成功,乐观锁不一定成功

在mysql中实现悲观锁
用select...for update实现悲观锁,commit之后就释放了

4、发布订阅

类似于生产者消费者模型
# 发布订阅和消息队列的区别
发布订阅全收到,消息队列有个抢的过程,只有一个能抢到

redis第一篇

5、Bitmap位图

统计日活量-->适用于大数量的
set 只适用于小范围的

redis第一篇

1 位图类型是string类型,最大512M
2 使用setbit时偏移量如果过大,会有较大消耗
3 位图不是绝对好用,需要合理使用

6、HyperLogLog

极小的空间完成独立数量统计
-pfadd key element  增加(重复了不会增加)
-pfcount key         统计个数
-去重,独立用户统计,有错误率

7、GEO(地理信息定位)

做附近的人需要地理信息,就两种:redis和es
存储经纬度,计算两地距离,范围等
本质:zset
可以使用zset的删除,删除指定member:zrem cities:locations beijing

redis第一篇

	# 插入
    geoadd cities:locations 116.28 39.55 beijing #把北京地理信息添加到cities:locations中
    geoadd cities:locations 117.12 39.08 tianjin
    geoadd cities:locations 114.29 38.02 shijiazhuang
    geoadd cities:locations 118.01 39.38 tangshan
    geoadd cities:locations 115.29 38.51 baoding
    geopos cities:locations beijing #获取北京地理信息
    # 计算北京到天津的距离
    geodist cities:locations beijing tianjin km
	# 计算北京方圆150km内的城市
    georadiusbymember cities:locations beijing 150 km

四、持久化

1、介绍

-rdb:缓存
-aof:对数据准确性要求高一些

2、rdb方案

rdb就是把数据以快照的形式保存在磁盘中
rdb持久化是指在指定时间间隔内将内存中的数据集快照写入磁盘
# rdb:触发方式三种
-手动 save(同步) 会造成redis的阻塞(数据量非常大的时候)
-手动 bgsave(异步) 会在后台异步进行快照操作,快照同时还可以响应客户端请求
-配置文件
    配置   seconds   changes
    save   900        1
    save   300        10
    save   60         10000
    
    
# 最佳配置redis.conf中配置
save 900 1 
save 300 10 
save 60 10000 
dbfilename dump-3306.rdb  #以端口号作为文件名,可能一台机器上很多reids,不会乱
dir /bigdiskpath #保存路径放到一个大硬盘位置目录
stop-writes-on-bgsave-error yes #出现错误停止
rdbcompression yes #压缩
rdbchecksum yes #校验

## 3、aof方案

客户端每写入一条命令,都记录一条日志,放到日志文件中,如果出现宕机,可以将数据完全恢复
# AOF 重写
	本质就是把过期的,无用的,重复的,可以优化的命令,来优化
	这样可以减少磁盘占用量,加速恢复速度
       
# aof的最佳配置redis.conf中配置
appendonly yes #将该选项设置为yes,打开
appendfilename "appendonly-3306.aof" #文件保存的名字
appendfsync everysec #采用第二种策略
dir /data #存放的路径
no-appendfsync-on-rewrite yes #在aof重写的时候,是否要做aof的append操作,因为aof重写消耗性能,磁盘消耗,正常aof写磁盘有一定的冲突,这段期间的数据,允许丢失

redis第一篇

五、主从复制原理与优化

主库要开启持久化
# 方式一:手动配置
在6380上执行(去从库配置,配置主库)
# 127.0.0.1 6379主库
# 127.0.0.1 6380 从库  redis-cli -p 6380  开启一个redis实例
每个redis实例都配有data存储库,名字不一致

# 在从库上执行,就建立了主从(搭建主从)
slaveof 127.0.0.1 6379 #异步  端口是主库的端口
# 取消主从
slaveof no one #取消复制,不会把之前的数据清除


# 方式二:配置文件配置
daemonize no
pidfile redis.pid
bind 0.0.0.0
protected-mode no
port 6379
timeout 0
logfile redis.log
dbfilename dump.rdb
dir /data
# 指定主库为10.0.0.101 6379
slaveof 10.0.0.101 6379
# 从库只读
slave-read-only yes
上一篇:@MapperScan和mybatis-plus.mapper-locations


下一篇:字符串排序1(指针数组,元素指针,行指针)(strcmp)