首页 > 数据库 >Redis

Redis

时间:2024-07-09 19:58:34浏览次数:14  
标签:Redis redis jedis key null public

Windows系统安装Redis


1、修改配置(可参考Linux配置)

修改Redis配置文件(服务模式启动)redis.windows-service.conf,前台方式启动时使用的配置文件为redis.windows.conf

bind 127.0.0.1 ::1 # 将本地地址绑定注释掉,否则不能远程连接

port 6379 # 配置监听端口

daemonize yes # 开启后台模式

pidfile /var/run/redis_6379.pid # 指定pid文件位置

protected-mode yes # 开启受保护模式

requirepass lilibo # 设置鉴权密码

2、安装服务

redis-server --service-install redis.windows-service.conf --loglevel verbose

3、启动服务

redis-server --service-start

4、启动客户端连接

redis-cli

如果设置了密码(保护模式)登录后执行以下命令输入密码:

auth pass

或者使用带参数的方式启动redis-cli客户端:

redis-cli -h your_hostname -p 6379 -a your_auth

注:配置文件redis.windows-service.conf中找到如下两项修改

protected-mode yes # 是否开启密码模式
requirepass lilibo # 设置密码

5、停止Redis服务(根据需要使用)

redis-server --service-stop

6、卸载Redis服务(根据需要使用)

redis-server --service-uninstall
Linux系统安装Redis

首先下载Redis(从Linux服务器上下载Redis可使用如下地址:)

wget http://download.redis.io/releases/redis-6.2.1.tar.gz

1、在/etc目录下新建redis目录,解压redis-6.2.1.tar.gz文件

cd /etc
mkdir redis
mkdir /usr/local/redis

tar -zxvf redis-6.2.1.tar.gz
cd redis-6.2.1

2、进行编译安装,指定安装位置为:/usr/local/redis

make distclean
make
make install

3、将下载后的redis-6.2.1/redis.conf文件复制一份到/etc/redis目录下,并命名为6379.conf

cd ~/root/redis-6.2.1/
cp redis.conf /etc/redis/6379.conf

4、将redis的启动脚本复制一份放到/etc/init.d目录下

cp /usr/local/redis/utils/redis_init_script /etc/init.d/redisd

5、修改Redis配置文件/etc/redis/6379.conf

    # bind 127.0.0.1 ::1 # 将本地地址绑定注释掉,否则不能远程连接

    port 6379 # 配置监听端口

    daemonize yes # 开启后台模式

    pidfile /var/run/redis_6379.pid # 指定pid文件位置

    protected-mode yes # 开启受保护模式

    requirepass lilibo # 设置鉴权密码

6、修改Redis启动脚本/etc/init.d/redisd

否则停止Redis时会报错:

(error) NOAUTH Authentication required.

修改启动脚本:

#!/bin/sh

REDISPORT=6379
EXEC=/usr/local/redis/src/redis-server
CLIEXEC=/usr/local/redis/src/redis-cli

PIDFILE=/var/run/redis_${REDISPORT}.pid
CONF="/etc/redis/${REDISPORT}.conf"
PASSWORD=$(cat $CONF|grep '^\s*requirepass'|awk '{print $2}'|sed 's/"//g')

case "$1" in
    start)
        if [ -f $PIDFILE ]
        then
                echo "$PIDFILE exists, process is already running or crashed"
        else
                echo "Starting Redis server..."
                $EXEC $CONF
        fi
        ;;
    stop)
        if [ ! -f $PIDFILE ]
        then
                echo "$PIDFILE does not exist, process is not running"
        else
                PID=$(cat $PIDFILE)
                echo "Stopping ..."
                if [ -z $PASSWORD ]
                then
                      $CLIEXEC -p $REDISPORT shutdown
                else
                     $CLIEXEC -a $PASSWORD -p $REDISPORT shutdown
                fi
                while [ -x /proc/${PID} ]
                do
                    echo "Waiting for Redis to shutdown ..."
                    sleep 1
                done
                echo "Redis stopped"
        fi
        ;;
    *)
        echo "Please use start or stop as first argument"
        ;;
esac

7、启动Redis服务

service redisd start

8、停止Redis服务(需要时使用)

service redisd stop

 使用Jedis操作Redis的代码实现如下

1.构建JedisPoolConfig及JedisPool,首先构建连接池配置对象JedisPoolConfig,并在其基础上构建Jedis连接池对象JedisPool

package com.bdqn.demo;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
public class JedisAPI {
    private static JedisPool jedisPool;
    static {
        //创建并配置连接池配置对象
        JedisPoolConfig config = new JedisPoolConfig();
        config.setMaxTotal(50);
        config.setMaxIdle(10);
        config.setMinIdle(7);
        config.setMaxWaitMillis(1000);//获取资源的等待时间
        config.setTestOnBorrow(true);//获取资源时是否验证资源的有效性
        //创建JEDIS连接池
        jedisPool = new JedisPool(config,//连接池配置对象
                "127.0.0.1",//Redis服务器地址
                6379,//Redis服务器端口
                10000,//连接超时时间
                "123456",//Redis密码
                0);//数据库索引
    }//static结束
    public void destroy() {
        if (!(jedisPool == null || jedisPool.isClosed())) {
            jedisPool.close();//关闭连接池
        }
    }
    public boolean set(String key,String value) {
        Jedis jedis=null;
        try {
            jedis = jedisPool.getResource();
            jedis.set(key, value);
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        } finally {
            if (jedis != null) {
                jedis.close();
            }
        }
    }
    public boolean set(String key,int seconds,String value) {
        Jedis jedis=null;
        try {
            jedis = jedisPool.getResource();
            jedis.setex(key, seconds, value);
            return true;
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (jedis != null) {
                jedis.close();
            }
        }
        return false;
    }

    /**
     * 判断某个key是否存在
     * @param key
     * @return
     */
    public boolean exists(String key) {
        Jedis jedis=null;
        try {
            jedis = jedisPool.getResource();
            return jedis.exists(key);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (jedis != null) {
                jedis.close();
            }
        }
        return false;
    }

    /**
     * 获取连接
     * @param key
     * @return
     */
    public String get(String key) {
        String value=null;
        Jedis jedis=null;
        try {
            jedis = jedisPool.getResource();
            return jedis.get(key);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (jedis != null) {
                jedis.close();
            }
        }
        return value;
    }
    public Long ttl(String key){
        Jedis jedis=null;
        try {
            jedis = jedisPool.getResource();
            return jedis.ttl(key);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (jedis != null) {
                jedis.close();
            }
        }
        return (long) -2;
    }
    /**
     * 删除
     */
    public void delete(String key) {
        Jedis jedis=null;
        try {
            jedis = jedisPool.getResource();
            jedis.del(key);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (jedis != null) {
                jedis.close();
            }
        }
    }
}

在上面的基础上增加操作Redis所需的方法

package com.bdqn.demo;
import org.junit.After;
import org.junit.Test;
import static org.junit.Assert.assertNull;
public class JedisTest {
    private JedisAPI jedisAPI;
    @org.junit.Before
    public void startUp() throws Exception{
        jedisAPI = new JedisAPI();
    }
    @After
    public void tearDown() throws Exception {
        if (jedisAPI != null) {
            jedisAPI.destroy();
        }
    }
    @Test
    public void test(){
        assertNull(jedisAPI.get("haha"));
    }
}

标签:Redis,redis,jedis,key,null,public
From: https://blog.csdn.net/2301_78714573/article/details/140304837

相关文章

  • php:安装phpredisadmin
    一,项目代码地址:https://github.com/erikdubbelboer/phpRedisAdmin二,下载:从命令行用wget下载[root@blogphpredisadmin]#wgethttps://github.com/erikdubbelboer/phpRedisAdmin/archive/refs/tags/v1.20.0.tar.gz下载完成后解压缩[root@blogphpredisadmin]#tar-zxvfv......
  • Redis实现可重入的分布式锁
    加锁脚本--加锁脚本--成功返回1,失败返回-1localkey=KEYS[1]localrequestId=KEYS[2]--单位毫秒localttl=tonumber(KEYS[3])localresult=redis.call('setnx',key,requestId)ifresult==1thenredis.call('pexpire',key,ttl)elseresult......
  • Redis实战(黑马点评--点赞关注)
    一、发布、查看探店笔记保存blog@PostMappingpublicResultsaveBlog(@RequestBodyBlogblog){//获取登录用户UserDTOuser=UserHolder.getUser();blog.setUserId(user.getId());//保存探店博文blogService.save(blog);//返回idret......
  • Redis实战(黑马点评--优惠券秒杀)
    一、redis实现全局唯一订单id1、问题:使用数据库自增id不合适当用户抢购商品时,生成的订单会保存到tb_voucher_order表中,而订单表如果使用数据库自增ID就会存在一些问题id规律性太明显受单表数据量的限制2、解决方法:全局id生成器符号位:1bit,永远为0时间戳:31bit,以秒为单位,可......
  • CenterOs7安装redis
    CenterOs7安装redis1.redis的安装1.1下载redis从官网下载redis,并且上传到服务器的安装位置1.2安装redis①解压redis,执行tar-zxvf安装包名称②makeredis源码,make③makeinstallmakeinstall2.redis的配置2.1配置启动脚本配置redis的启动脚本,放置于/etc/init.d/......
  • redis学习(007 实战:黑马点评:登录)
    黑马程序员Redis入门到实战教程,深度透析redis底层原理+redis分布式锁+企业解决方案+黑马点评实战项目总时长42:48:00共175P此文章包含第25p-第p34的内容文章目录短信登录功能session共享问题短信登录功能接口编写这里是Result的封装过滤器在......
  • Redis三大缓存问题:缓存穿透、缓存击穿、缓存雪崩的场景以及解决方法
    文章目录都是缓存惹的祸缓存穿透场景描述解决方法缓存键同时失效1.过期时间随机化2.使用多级缓存3.缓存预热4.加互斥锁缓存中间件故障1.服务熔断-Java示例2.构建Redis集群注意事项缓存击穿场景描述解决方法1.加互斥锁(MutexLock)2.永久缓存热点数据注意事......
  • redis常用命令
    redis常用命令:    1)连接操作命令   quit:关闭连接(connection)   auth:简单密码认证   helpcmd:查看cmd帮助,例如:helpquit      2)持久化   save:将数据同步保存到磁盘   bgsave:将数据异步保存到磁盘   lastsave:返回上次成功将数据保......
  • redis安装教程
    1.redis下载: Windows下载reids:https://github.com/MSOpenTech/redis/releases。 下载redis的可视化工具:https://github.com/uglide/RedisDesktopManager/releases/download/0.9.3/redis-desktop-manager-0.9.3.817.exe 2.启动redis:,,打开运行窗口,启动redis服务器端,然......
  • redis安装
    redis安装#1、安装编译环境等dnfinstall-ygccvimwget#2、下载并建立目录mkdirsoftwarewgethttps://download.redis.io/releases/redis-7.2.5.tar.gztar-zxvfredis-7.2.5.tar.gz#3、安装cdredis-7.2.5.tar.gzmakemakeinstall4、编译后默认安装目录是/usr/local/bin......