redis

Redis基础

1.redis安装

  1. 下载redis:https://redis.io/

  2. 需要gcc环境将下载的redis源码进行编译,没有gcc环境则需要先安装gcc环境(以root账户登录并且可以联网)
    yum -y install gcc automake autoconf libtool make

  3. 将下载的redis解压到/opt目录下
    tar -zxvf redis -5.0.8-tar.gz -C /opt

  4. 进入解压后的redis目录 ,执行make命令进行编译
    cd /opt/redis-5.0.8
    make

  5. 安装编译后的文件到指定目录(在/opt/redis -5.0.8目录下进行install)
    make PREFIX=/usr/local/redis install

  6. 进入/usr/local/redis下的bin目录中,启动redis
    服务端启动:./redis-server
    客户端启动:./redis-cli
    ctrl+c可以退出客户端与服务端

  7. 查看当前哪些redis启动
    ps -ef | grep -i redis

2.redis的配置

  1. 进入/opt/redis目录下,将redis.conf复制到安装文件的目录下
    cp redis.conf /usr/local/redis
  2. 详细配置
  • daemonize no:redis默认不是以守护进程的方式运行,可以通过修改该配置,启用守护进程。
  • 当redis以守护进程方式运行时,redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定pidfile /var/run/redis.pid
  • 指定redis的监听端口,默认端口为6379,因为6379在手机按键上MERZ对应的号码
    port 6379
  • 绑定的主机地址
    bind 127.0.0.1
  • 当客户端闲置多长时间后关闭连接,如果指定为0,表示关闭该功能
    timeout 300
  • 指定日志记录级别,redis总共支持四个级别:debug,verbose,notice,warning,默认为verbose
    loglevel verbose
  • 日志记录方式,默认为标准输出,如果配置redis为守护进程方式运行,而这里又配置为日志记录方式为标准输出,则日志将会发送给/dev/null
    logfile stdout
  • 设置数据库的数量,默认数据库为0,可以使用SELECT 命令在连接上指定数据库id
    databases 16
  • 指定在多长时间内,有多少次更新操作,将数据同步到数据文件,可以多个条件配合
    save <seconds> <changes>
    redis默认配置文件中提供了三个条件:
    save 900 1
    save 300 10
    save 60 10000
    分别表示900秒(15分钟)内有1个更改,300秒内有10个更改以及60秒内有10000个更改
  • 指定存储至本地数据库时是否压缩数据,默认为yes,redis采用LZF(压缩算法)压缩,如果为了节省CPU时间,可以关闭该选项,但会导致数据库文件变得巨大
    rdbcompression yes
  • 指定本地数据库文件名,默认值为dump.rdb
    dbfilename dump.rdb
  • 指定本地数据库存放目录
    dir ./
  • 设置当本机为slav服务时,设置master服务的ip地址及端口,在redis启动时,它会自动从master进行数据同步
    slaveof <masterip> <masterport>
  • 当master服务设置了密码保护时,slav服务连接master的密码
    masterauth <master-password>
  • 设置redis连接密码,如果配置了连接密码,客户端再连接redis时需要通过AUTH <password>命令提供密码,默认关闭
    requirepass foobared
  • 设置同一时间最大客户端连接数,默认无限制,redis可以同时打开的客户端连接数为redis进程可以打开的最大文件描述符数,如果设置maxclients 0,表示不作限制。当客户端连接数达到限制时,redis会关闭新的连接并向客户端返回max number of clients reached错误信息
    maxclients 128
  • 指定redis最大内存限制,redis在启动时会把数据加载到内存中,达到臭内存后,redis会先尝试清除已到期或即将到期的key,当此方法处理后,仍然到达最大内存设置,将无法再进行写入操作,但仍然可以进行读取操作。redis新的vm机制,会把key存放内存,value会存放在swap区
    maxmemory <bytes>
  • 指定是否在每次更新操作后进行日志记录,redis在默认情况下是异步的把数据写入磁盘,如果不开启,可能会在断电时导致一段时间内的数据丢失。因为redis本身同步数据文件是按上面save条件来同步,所以有的数据会在一段时间内只存在于内存中。默认为no
    appendonly no
  • 指定更新日志文件名,默认为appendonly.aof
    appendfilename appendonly .aof
  • 指定更新日志条件,共有三个可选值:
    no:表示等操作系统进行数据缓存同步到磁盘(快)
    always:表示每次更新操作后手动调用fsync()将数据写到磁盘(慢,安全)
    everysec:表示每秒同步一次(折衷,默认值)
    appendfsync everysec

3.redis中的内存维护策略

redis作为优秀的中间缓存件,时常会存储大量的数据,即使采取了集群部署来动态扩容,也应该即时的整理内存,维持系统性能。
1.在redis中有两种解决方案 为数据设置过期时间
expire key time(以秒为单位)–最常用的方式
setex(String key,int seconds,String value)–字符串独有的方式

  • 除了字符串自己独有设置过期时间的方法外,其他方法都需要依靠expire方法来设置时间
  • 如果没有设置时间,那缓存就是永不过期
  • 如果设置了过期时间,之后又想让缓存永不过期,使用persist key

2.采用LRU算法动态将不用的数据删除
内存管理的一种页面置换算法,对于在内存中但又不用的数据块(内存块)叫做LRU,操作系统会根据哪些数据属于LRU而将其移出内存而腾出空间来加载另外的数据

  • volatile-lru:设定超时时间的数据中,删除最不常用的数据
  • allkeys-lru:查询所有的key中最近最不常用的数据进行删除,这是应用最广泛的策略
  • volatile-random:在已设定了超时的数据中随机删除
  • allkeys-random:查询所有的key,之后随机删除
  • volatile-ttl:查询全部设定超时时间的数据,之后排序,将马上要过期的数据进行删除操作
  • noeviction:如果设置为该属性,则不会进行删除操作,如果内存溢出则报错返回
  • volatile-lfu:从所有配置了过期时间的键中驱逐使用频率最少的键
  • allkeys-lfu:从所有键中驱逐使用频率最少的键

4.自定义配置redis

修改redis.conf配置文件

  • daemonize no 修改为daemonize yes 启动守护进程
  • bind 127.0.0.1 注释掉,允许本机以外的机器访问redis服务
  • requirepass 设置密码

修改配置后服务端启动:./redis-server ./redis.conf
客户端启动:./redis-cli

5.redis的关闭

1.非正常关闭
查询redis进程id
PID ps -ef | grep -i redis
kill对查询的id进行强制关闭
kill -9 PID
2.正常关闭
关闭redis服务,通过客户端进行shutdown
如果redis设置了密码,需要先在客户端通过密码登录,再进行shutdown即可关闭服务端(这样会保存数据)
在这里插入图片描述

6.防火墙端口

查看已开启的端口
firewall -cmd --list-ports
开启端口
firewall-cmd --zone=public --add-port=6379/tcp --permanent
重启防火墙
firewall-cmd --reload #重启
firewall systemctl stop firewalld.service #停止
firewall systemctl disable firewalld.service #禁止firewall卡机启动

7.docker安装redis

1.搜索redis
docker search redis
2.下载镜像
docker pull redis:5.0.7
3.创建并运行容器
docker run -d --name redis6379 -p 6379:6379 redis:5.0.7 --requirepass "password"
4.测试redis进入客户端
使用redis镜像执行redis-cli命令连接到刚启动的容器
docker exec -it redis-6379 redis-cli //开启客户端功能
docker exec -it redis-6379 redis-cli -h 127.0.0.1 -p 6379 -a password //进入客户端

8.redis命令

redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)以及zset(sorted set:有序集合)等

常用key命令**
keys *:返回满足的所有键。可以模糊匹配 比如 keys abc* 代表abc开头的key
exists key:是否存在指定的key,存在返回1,不存在返回0
expire key second:设置某个key的过期时间 单位为秒
del key:删除某个key
ttl key:查看剩余时间,当key不存在时,返回-2;存在但没有设置剩余生存时间时,返回-1,否则,以秒为单位,返回key的剩余生存时间
persist key:取消过期时间
PEXPIRE key milliseconds 修改key的过期时间为毫秒
select:选择数据库 数据库为0-15(默认一共16个数据库) 设计成多个数据库实际上是为了数据库安全和备份
move key dbindex:将当前数据中的key转移到其他数据库
randomkey:随机返回一个key
rename key key2:重命名key
echo:打印命令
dbsize:查看数据库的key数量
info:查看数据库信息
config get *:实时传储收到的请求,返回相关的配置
flushdb:清空当前数据库
flushall:清空所有数据库
type key:返回key所存储值的类型
redis命令参考手册:
java http://doc.redisfans.com/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值