Redis(三)

Stella981
• 阅读 599

Redis相关配置

ip地址的绑定(bind)

默认情况下bind=127.0.0.1只能接受本机的访问请求

不写的情况下,无限制接受任何ip地址的访问

生产环境环境肯定要写你应用服务器的地址

如果开启了protected-mode,那么在没有设定bind ip且没有设密码的情况下,Redis只允许接受本机的响应

tcp-backlog

可以理解成一个请求到达后至到接受进程处理前的队列里所允许存在的请求个数

backlog队列总和=未完成三次握手队列+已经完成三次握手队列

高并发环境tcp_backlog设置值跟超时时限内的Redis吞吐量决定

timeout

一个空闲的客户端维持多少秒会自动关闭,0为永不关闭

TCP keepalive

对访问客户端的一种心跳检测,每隔n秒检测一次,官方推荐设为60s

daemonize

是否为后台进程

pidfile (pid是进程号)

存放在pid文件的位置,每个实例都会产生一个不同的pid文件

log level

四个级别根据使用阶段来选择,生产环境选择notice或者warning

logfile

日志文件名称

syslog

是否将Redis日志输送到inux系统日志服务中

syslog-ident

日志的标志

syslog-facility

输出日志的设备

database

设定库的数量

security

在命令行中设置密码

例:

注意都是临时密码,因为在指令中的命令只在内存中有效

config get requirepass 获取密码

config set requirepass "123456" 设置密码

auth 123456 //登录

如果设置永久密码可在redis.conf文件中找到requirepass选择,在其后面添加密码即可

maxclient

最大客户端连接数

maxmemory

设置Redis可以使用的内存量,一旦到达内存使用上限,Redis将会试图移除内部数据,移动规则可以通过maxmemory-policy来指定,如果Redis无法根据移除规则来移除内存中的数据,或者设置了“不允许移除”

那么redis则会针对那些需要申请内存的指令返回错误信息,比如SET、LPUSH

Maxmemory-policy

volatile-lru 使用LRU(最近最少使用)算法移除key,只对设置了过期时间的键

allkeys-lru :使用LUR算法移除key

volatitle-random 在过期集合中移除随机的key,只对设置了过期时间的键

allkeys-random:移动随机的key

volatitle-ttl(即将过期):移除那么TTL值最小的key,即那么些最近要过期的key

noeviction 不进行移除,针对写操作,只是返回错误信息

Maxmemory-samples

设置样本数量,LRU算法和最小TTL算法都并非是精确的算法,而是估算值,所有你可设置样本的大小,一般设置3到7的数字,数值越小样本越不准确,但是性能消耗也越大

java连接Redis,我这里是以spring boot微服务项目作为一个简单的例子

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis-reactive</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>io.projectreactor</groupId>
            <artifactId>reactor-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>3.2.0</version>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

package com.example.demo;

import redis.clients.jedis.Jedis;

public class Test {
    /**
     * 测试java连接redis
     */
    public static void main(String[] args)
    {
        Jedis jedis=new Jedis("127.0.0.1",6379);
        String string =jedis.ping();
        System.out.println(string);
        jedis.set("a","b");
        jedis.get("a");
        jedis.close();

    }
}

注意:我这里为了测试连接是本机,如果需要连接服务器,需要注掉redis.conf里里面的bind选择,同时设置protected-mode的值为no

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
3个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Wesley13 Wesley13
3年前
RAC环境单实例启动数据库收到ORA
     在RAC环境中,如果你在没有启动节点的集群服务的情况下单实例启动数据库,将收到类似如下的报错:\oracle@rhel1u01\$sqlSQL\Plus:Release10.2.0.5.0ProductiononTueApr215:00:272013Copyright(
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Stella981 Stella981
3年前
Redis(1.5)Redis配置文件(4.0.14)
4.0.14常用配置bind127.0.0.1默认绑定本地,不写的话任何地址都可以访问protectedmodeyes    保护模式,如果没有设置bind配置地址,也没有设置任何密码,则只允许本地连接port6379        端口号6379timeout0
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
为什么mysql不推荐使用雪花ID作为主键
作者:毛辰飞背景在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究
Python进阶者 Python进阶者
9个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这