首页系统综合问题「建议收藏」手把手教你从零搭建一个redis服务

「建议收藏」手把手教你从零搭建一个redis服务

时间2023-02-10 09:18:59发布分享专员分类系统综合问题浏览164

今天小编给各位分享enabled的知识,文中也会对其通过「建议收藏」手把手教你从零搭建一个redis服务和如何搭建redis扩展等多篇文章进行知识讲解,如果文章内容对您有帮助,别忘了关注本站,现在进入正文!

内容导航:

  • 「建议收藏」手把手教你从零搭建一个redis服务
  • 如何搭建redis扩展
  • 如何在Windows操作系统中搭建redis环境
  • 如何搭建redis扩展
  • 一、「建议收藏」手把手教你从零搭建一个redis服务

    前言

    自己在搭建redis服务的时候碰到一些问题,好多人只告诉你怎么成功搭建,但是并没有整理过程中遇到的问题,所有楼主就花了点时间来整理下。

    linux环境安装redis安装中的碰到的问题和解决办法怎么在代码中使用安装的redis设置用户名和密码程序应用中碰到的问题

    介绍

    redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

    Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便。

    一、安装redis

    1、下载安装包

    cd /www/redis/wget http://download.redis.io/releases/redis-4.0.8.tar.gztar -zxvf redis-4.0.8.tar.gzmv redis-4.0.8 redis

    2、编译redis

    cd /www/redis/redis/make MALLOC=libcmake PREFIX=/usr/local/redis install

    3、准备配置文件

    cd /usr/local/redismkdir confcd conf/vi redis_6379.conf

    配置文件内容如下:

    bind 127.0.0.1protected-mode noport 6379tcp-backlog 511timeout 0tcp-keepalive 300daemonize yessupervised nopidfile /www/redis/data/redis/6379/redis_6379.pidloglevel noticelogfile "/www/redis/data/redis/6379/log.log"databases 16always-show-logo yessave 900 1save 300 10save 60 10000stop-writes-on-bgsave-error yesrdbcompression yesrdbchecksum yesdbfilename dump.rdbdir /www/redis/data/redis/6379/slave-serve-stale-data yesslave-read-only yesrepl-diskless-sync norepl-diskless-sync-delay 5repl-disable-tcp-nodelay noslave-priority 100lazyfree-lazy-eviction nolazyfree-lazy-expire nolazyfree-lazy-server-del noslave-lazy-flush noappendonly yesappendfilename "appendonly.aof"appendfsync everysecno-appendfsync-on-rewrite noauto-aof-rewrite-percentage 100auto-aof-rewrite-min-size 64mbaof-load-truncated yesaof-use-rdb-preamble nolua-time-limit 5000slowlog-log-slower-than 10000slowlog-max-len 128latency-monitor-threshold 0notify-keyspace-events ""hash-max-ziplist-entries 512hash-max-ziplist-value 64

    4、启动服务

    mkdir -p /www/redis/data/redis/6379/cd ../bin/./redis-server ../conf/redis_6379.conf

    5、使用客户端链接

    ./redis-cli

    判断是否启动成功

    6、使用

    查看数据

    keys *

    设置值

     set oneKey 测试

    获取值

    get oneKey

    二、安装中的碰到的问题和解决办法

    问题一:

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

    临时解决办法:

    echo 511 > /proc/sys/net/core/somaxconn

    永久解决办法

    vi /etc/sysctl.conf

    在里面添加net.core.somaxconn= 1024 然后执行sysctl -p 就可以永久消除这个warning

    问题二:

    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.

    可以参考问题一的解决

    问题三:

    WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled

    执行命令echo never>/sys/kernel/mm/transparent hugepage/enabled

    永久解决添加配置文件即可

    vi /etc/rc.local

    三、怎么在代码中使用安装的redis呢

    需要引用的jar包有

    commons-pool-1.6.jarjedis-2.9.0.jar

    示例代码

     public static void main(String[] args) { //创建redis对象 String ip = ""; Jedis jedis=new Jedis(ip,6379);//链接redis //记录操作个数 jedis.set("name", "小明"); System.out.println("name已经赋值"); String name = jedis.get("name"); System.out.println("赋值后获取name的值为:"+name); jedis.del("name"); System.out.println("name已经删除"); String nameT = jedis.get("name"); System.out.println("删除后获取name的值为:"+nameT);  }//结果name已经赋值赋值后获取name的值为:小明name已经删除删除后获取name的值为:null

    四、设置用户名和密码

    1、在配置文件中redis_6379.conf直接添加requirepass 123456

    2、通过命令添加

    设置密码

    #设置密码config set requirepass 123456

    查看密码

    config get requirepass

    需要验证密码以后才可以查看

    测试代码

     public static void main(String[] args) { //创建redis对象 String ip = ""; Jedis jedis=new Jedis(ip,6379);//链接redis jedis.auth("123456"); //记录操作个数 jedis.set("name", "小明"); System.out.println("name已经赋值"); String name = jedis.get("name"); System.out.println("赋值后获取name的值为:"+name); jedis.del("name"); System.out.println("name已经删除"); String nameT = jedis.get("name"); System.out.println("删除后获取name的值为:"+nameT);  } #结果name已经赋值赋值后获取name的值为:小明name已经删除删除后获取name的值为:null

    五、应用中碰到的问题

    链接被拒绝或者超时问题

    redis刚开始配置的ip是默认ip和端口127.0.0.1:6379,这个ip只能服务的本地进行链接。解决办法:

    在配置文件中把这个ip给注释

    在阿里云中配置安全组

    修改好配置文件和安全组以后,可以通过阿里云服务的外网ip和redis的端口访问。

    但是呢,又报一个问题,保护模式下拒绝访问

    根据提示修改配置文件redis_6379.conf中属性protected-mode no,并重启服务

    再次测试代码连接正常~

    关注公众号“莫非技术栈”可以免费领取学习资料哦~

    一、如何搭建redis扩展

    上海蓝盟为您解答:
    安装redis扩展:
    1.通过composer进行安装,到项目根目录cmd运行(推荐)
    php composer.phar require --prefer-dist yiisoft/yii2-redis

    或者添加
    "yiisoft/yii2-redis": "~2.0.0"

    到对应项目的composer.json文件中
    2.手动安装
    点击下载:yii2.0-redis扩展
    把下载的扩展文件放到vendor/yiisoft/下,命名为yii2-redis
    修改vender/yiisoft/下的extensions.php,加入redis扩展
    'yiisoft/yii2-redis' =>
    array (
    'name' => 'yiisoft/yii2-redis',
    'version' => '2.2.0.0',
    'alias' =>
    array (
    '@yii/redis' => $vendorDir . '/yiisoft/yii2-redis',
    ),
    ),

    以上两种方式安装完成之后
    windows下的环境搭建redis
    下载地址: 下载下来的包里有两个,
    一个是32位的,一个是64位的。根据自己的实情情况选择,
    把这个文件夹复制到其它地方,比如D:\redis 目录下。
    打开一个cmd窗口,使用cd命令切换目录到D:\redis 运行 redis-server.exe redis.conf
    运行之后会出现以下界面:
    blob.png
    说明redis服务已经启动
    配置Yii的component
    'redis' => [
    'class' => 'yii\redis\Connection',
    'hostname' => 'localhost',
    'port' => 6379,
    'database' => 0,
    ],

    这样我们的redis就配置完成了,接下来就是验证了
    public function actionIndex()
    {
    Yii::$app->redis->set('test','111'); //设置redis缓存
    echo Yii::$app->redis->get('test'); //读取redis缓存
    exit;
    return $this->render('index');
    }

    页面输出了“111”,就说明redis配置成功了

    二、如何在Windows操作系统中搭建redis环境

    1、下载适合在Windows操作系统中安装的Redis:
    2、解压下载下来的压缩文件,这时你会得到两个版本的Redis版本:一个是32位的,一个是64位的。
    3、选择适当的版本,然后把这个文件夹复制到其它地方,比如C:\redis目录下。
    4、打开一个cmd窗口,借助cd命令切换到C:\redis目录下。
    5、运行redis-server.exe redis.conf。说明:redis.conf可以省略,如果省略,会启用默认的。

    三、如何搭建redis扩展

    应用Redis实现数据的读写,同时利用队列处理器定时将数据写入mysql,此种情况存在的问题主要是如何保证mysql与redis的数据同步,二者数据同步的关键在于mysql数据库中主键,方案是在redis启动时去mysql读取所有表键值存入redis中,往redis写数据时,对redis主键自增并进行读取,若mysql更新失败,则需要及时清除缓存及同步redis主键。
    String tbname = "login";
    //获取mysql表主键值--redis启动时
    long id = MySQL.getID(tbname);
    //设置redis主键值--redis启动时
    redisService.set(tbname, String.valueOf(id));
    System.out.println(id);
    long l = redisService.incr(tbname);
    System.out.println(l);
    Login login = new Login();
    login.setId(l);
    login.setName("redis");
    redisService.hmset(String.valueOf(login.getId()), login);
    boolean b = MySQL.insert("insert into login(id,name) values(" + login.getId() + ",'" + login.getName() + "')");

    if (!b){
    redisService.delKeyAndDecr(tbname, "Login:"+String.valueOf(login.getId()));
    }
    System.out.println(redisService.exists("Login:"+String.valueOf(login.getId())));
    System.out.println(redisService.get(tbname));

    关于enabled的问题,通过《如何在Windows操作系统中搭建redis环境》、《如何搭建redis扩展》等文章的解答希望已经帮助到您了!如您想了解更多关于enabled的相关信息,请到本站进行查找!

    爱资源吧版权声明:以上文中内容来自网络,如有侵权请联系删除,谢谢。

    enabled
    路由器越来越卡怎么办?终于找到5个秘诀 iPhone忘记锁屏密码怎么办 苹果官方教程来了