redis问题笔记

一、redis启动问题

1、启动后在日志文件中发现如下警告:

a.服务器分配内存太小了,将其修改为511以上即可,其实也可以不用管。

The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128

解决方案:修改系统配置文件sysctl.conf;方式如下:

vim /etc/sysctl.conf
在这个文件中添加 net.core.somaxconn= 1024
然后执行:sysctl -p  #使配置文件生效

b、内存分配策略问题,这个警告也可以不用管

WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.

解决方案:同上面的步骤修改sysctl.conf文件,在文件中添加如下配置即可:

vm.overcommit_memory=1
它是 内存分配策略
可选值:0、1、2。
0, 表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。
1, 表示内核允许分配所有的物理内存,而不管当前的内存状态如何。
2, 表示内核允许分配超过所有物理内存和交换空间总和的内存

************************END*************************************


二、redis使用Java操作时遇到的问题

1.使用spring注入jedisPool时,在获取jedis时报

redis.clients.jedis.exceptions.JedisException: Could not get a resource from the pool异常

这个可能是配置testOnBorrow做链接可用性检查,且redis配置了权限认证。则在注入jedisPool时必须将密码设置进去。
具体spring配置文件入下



    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

 

    
    
    
    
    
    

Java测试

import org.junit.Before;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;

/**
 * redis 和spring 整合测试
 * Created by vf on 2017/9/20.
 */
public class RedisSpringTest {

    private ApplicationContext applicationContext;

    @Before
    public void setUp(){
        String configLocation = "classpath*:spring/applicationContext-redis.xml";
        applicationContext = new ClassPathXmlApplicationContext(configLocation);
    }

    @Test
    public void JedisSpringTest() throws Exception{
        JedisPool jedisPool = (JedisPool)applicationContext.getBean("jedisPool");
        Jedis jedis = jedisPool.getResource();
        System.out.println( jedis.get("tmp"));
    }
}

你可能感兴趣的:(redis问题笔记)