CentOS7安装配置redis及使用JedisPool实现对redis的操作

16 篇文章 0 订阅

CentOS7安装配置redis及使用JedisPool实现对redis的操作

1. CentOS7安装配置Redis

  1. 安装gcc

    yum install -y gcc
    
  2. 下载到对应目录、解压

    wget -P /etc/opt/module http://download.redis.io/releases/redis-5.0.4.tar.gz
    
    tar -zxvf redis-5.0.4.tar.gz
    
  3. 切换到redis解压目录。执行编译

    cd redis-5.0.4
    
    make
    
    make install /etc/opt/module/redis-5.0.4
    
  4. 修改redis.conf配置文件

    1. 注释掉下面这一行
    bind 127.0.0.1
    
    2. 关闭保护模式
    protected-mode 把yes改为no
    
    3. 开启后台启动
    daemonize 改为no
    
    4. 设置密码
    requirepass XXX
    
  5. 启动测试:

    redis-server redis.conf
    
    redis-cli -p 6379
    
  6. 配置开机启动

    • 升级redis为系统服务

      在安装目录中有个utils,进入该目录执行
      ./install_server.sh
      一直按回车,最终在/etc/init.d目录下生成了一个redis_6379的文件
      
    • 修改脚本文件名称

      mv /etc/init.d/redis_6379 /etc/init.d/redisd
      
    • 设置开机启动

      chkconfig --add redisd
      
      systemctl start redisd
      
      systemctl daemon-reload
      

2. SpringBoot配置JedisPool

  1. pom文件

    <dependency>
        <groupId>redis.clients</groupId>
        <artifactId>jedis</artifactId>
        <version>3.1.0</version>
    </dependency>
    
  2. 配置文件

    spring.redis.host=192.168.1.200
    spring.redis.port=6379
    spring.redis.password=XXX
    
  3. JedisPool工具类

    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import redis.clients.jedis.Jedis;
    import redis.clients.jedis.JedisPool;
    import redis.clients.jedis.JedisPoolConfig;
    
    @Configuration
    public class JedisConfig {
        @Value("${spring.redis.host}")
        private String host;
    
        @Value("${spring.redis.port}")
        private Integer port;
    
        @Value("${spring.redis.password}")
        private String password;
    
        @Bean
        public JedisPool jedisPool() {
            JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
            jedisPoolConfig.setMaxIdle(10);//最大空闲链接
            jedisPoolConfig.setMaxTotal(100);//最大连接数
            jedisPoolConfig.setMaxWaitMillis(1000*60*3);//最大等待毫秒数
            jedisPoolConfig.setTestOnBorrow(true);//获取链接检查有效性
            jedisPoolConfig.setTestOnReturn(false);//返回验证
            jedisPoolConfig.setBlockWhenExhausted(true);//链接耗尽是否阻塞
            jedisPoolConfig.setTestOnCreate(true);//部署时 为True;
            return new JedisPool(jedisPoolConfig, host, port, 10000, password);
        }
    }
    
    
  4. 在方法中使用jedis

    Jedis jedis = null;
    try {
        jedis = jedisPool.getResource();
        
        // TO DO...
        
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        if (null != jedis) {
            jedis.close();
        }
    }
    

3. Jedis对redis的操作

1. 键操作

清空数据jedis.flushAll()或jedis.flushDB()
判断某个键是否存在boolean jedis.exists(String key)
新增键值对jedis.set(String key, String value)
获取所有的keySet jedis.keys("*")
删除键为key的数据jedis.del(String key)
设置键为key的过期时间为i秒jedis.expire(String key, int i)
获取键为key的数据的剩余生存时间int jedis.ttl(String key)
移除键为key属性的生存时间限制jedis.persist(String key)
查看键为key所对应的value的数据类型jedis.type(String key)

注意:

  1. jedis.flushAll()和jedis.flushDB()的区别:

    1、flushall 清空数据库并执行持久化操作,也就是rdb文件会发生改变,变成76个字节大小(初始状态下为76字节),所以执行flushall之后数据库真正意义上清空了。
    
    2、flushdb 清空数据库,但是不执行持久化操作,也就是说rdb文件不发生改变。而redis的数据是从rdb快照文件中读取加载到内存的。所以在flushdb之后,如果想恢复数据库,则可以直接kill掉redis-server进程,然后重新启动服务,这样redis重新读取rdb文件,数据恢复到flushdb操作之前的状态。
    
    要直接kill掉redis-server服务,因为shutdown操作会触发持久化。
    
    lsof -i:6379 命令查看redis-server的进程号,然后kill即可
    

2. 对String的操作

增加或覆盖数据jedis.set(String key, String value)
增加不覆盖数据(重复不插入)jedis.setnx(String key, String value)
增加数据并设置有效时间tjedis.setex(String key, int t, String value)
删除键为key的数据jedis.del(String key)
获取键为key对应的valuejedis.get(String key)
再key对应的value后面扩展字符串sjedis.append(String key, String s)
增加对个键值对jedis.mset(String k1, String v1, String k2, String v2, …)
获取多个key对应的valueString[] jedis.mget(String k1, String k2, …)
删除多个key对应的valuejedis.del(new String[]{String k1, String k2, …})
获取key对应的value并更新valueString jedis.getSet(String key, String value)
获取key对应的value的第i到第j个字符String jedis.getrange(String key, int i, int j)

3. 对整数和浮点数的操作

增加或覆盖数据项jedis.set(String key, String value)
获取键为key对应的valuejedis.get(String key)
将key对应的value加1jedis.incr(String key)
将key对应的value自加njedis.incrBy(String key, int n)
将key对应的value减1jedis.decr(String key)
将key对应的value自减njedis.decrBy(String key, int n)

4. 对列表List的操作

添加一个Listjedis.lpush(String key, String v1, String v2,…)
往key对应List左侧插入一个元素ajedis.lpush(String key, String a)
获取key对应List区间[i,j]的元素jedis.lrange(String key, int i, int j)
删除key中num个值为val的元素jedis.lrem(String key, int num, String val)
删除List区间[i,j]之外的元素jedis.ltrim(String key, int i, int j)
key对应的List左侧出栈一个元素jedis.lpop(String key)
key对应的List右侧插入一个元素ajedis.rpush(String key, String a)
key对应的List右侧出栈一个元素jedis.rpop(String key)
修改key对应List指定下标index的元素jedis.lset(String key, int index, String val)
获取key对应List的长度jedis.llen(String key)
获取key对应List下标为index的元素jedis.lindex(String key, int index)
把key对应List的元素从小到大排序jedis.sort(String key)

5. 对集合set的操作

添加一个Setjedis.sadd(String key, String v1, String v2,…)
获取key对应Set的所有元素jedis.smembers(String key)
判断Set中是否包含某元素Boolean jedis.sismember(String key, String value)
删除一个值为val的元素jedis.srem(String key, String val)
删除值为v1,v2的元素jedis.srem(String key, String v1, String v2,…)
随机出栈Set里的一个元素Jedis.spop(String key)
获取Set中的元素个数jedis.scard(String key)
将元素val从集合k1剪切到k2jedis.smove(String k1, String k2, String val)
获取集合k1和集合k2的交集jedis.sinter(String k1, String k2)
获取集合k1和集合k2的并集jedis.sunion(String k1, String k2)
获取集合k1和集合k2的差集jedis.sdiff(String k1, String k2)

6. 对哈希Hash的操作

添加一个Hashjedis.hmset(String key, Map map)
往key插入一个元素(key1-val1)jedis.hset(String key, String key1, String val1)
获取key所有(k-v)元素jedis.hgetAll(String key)
获取Hash所有的keyjedis.hkeys(String key)
获取Hash所有的valuejedis.hvals(String key)
把key中k对应的元素自加ijedis.hincrBy(String key, String k, int i)
把key中key对应的元素自减ijedis.hdecrBy(String key, String k, int i)
从key中删除一个或多个元素jedis.hdel(String key, String k1, String k2,…)
获取key中元素个数jedis.hlen(String key)
判断key是否存在k1对应元素jedis.hexists(String key, String k1)
获取key中一个或多个元素valuejedis.hmget(String key, String k1, String k2,…)

7. 对有序集合ZSet的操作

添加一个ZSetjedis.zdd(String key, int score, String val)
往ZSet插入一个元素jedis.hset(String key, int score, String value)
获取ZSet里下标[i,j]区间元素valjedis.zrange(String key, int i, int j)
获取ZSet里下标[i,j]区间元素(score-val)jedis.zrangeWithScores(String key, int i, int j)
获取ZSet里score[i,j]区间元素valjedis.zranageByScore(String key, int i, int j)
获取ZSet里score[i,j]区间元素(score-val)jedis.zrangeByScoreWithScores(String key, int i, int j)
获取ZSet里值为value元素的scorejedis.zscore(String key, String value)
获取ZSet里值为value元素的score排名jedis.zrank(String key, String value)
删除ZSet里值为value的元素jedis.zrem(String key, String value)
获取ZSet的元素个数jedis.zcard(String key)
获取ZSet里score[i,j]区间元素个数jedis.zcount(String key, int i, int j)
把ZSet中值为value的元素score加njedis.zincrby(String key, int n, String value)

8. 排序操作

生成一个排序对象(SortingParams)new SortingParams()
队列按首字母a-z排序jedis.sort(String key, sortingParams.alpha())
队列按数字升序排序jedis.sort(String key, sortingParams.asc())
队列按数字降序排序jedis.sort(String key, sortingParams.desc())
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值