加载中...

Redis基础

Redis基础

1. 什么是Redis

  1. 简单而言,redis他就是一种数据库(非关系型数据库),用来存储数据
  2. 两大特点:
    1. 键值性(key--values)
    2. nosql(不用sql语言)
  3. value的类型:字符串,数值,json
  4. 存储方式:多依赖于内存,性能较好
  5. 官网:https://redis.io/

2. 安装

  1. 基于Linux系统安装

  2. 首先安装Redis所需要的gcc依赖

    yum install -y gcc tcl
    
  3. 下载redis(https://redis.io/download/)

  4. 上传到虚拟机并进行解压

  5. 进入到redis目录,运行编译命令

    make && make install
    

3. 启动

  • 默认启动(前台启动)

    在任何目录下输入:redis-server

  • 指定配置启动

    配置文件为 redis.conf,

    #访问地址改为任何ip都可访问:
    bind 0.0.0.0  #生产环境不要设置为这样,
    # 守护进程
    daemonize yes
    # 密码
    requirepass 1111111
    

    进入redis目录,启动:redis-server redis.conf

    停止:redis-cli -u 1111111 shutdown(-u 是因为设置了密码)

  • 开机自启

    创建一个系统服务文件

    vi /etc/systemd/system/redis.service
    

    文件的内容:

    [Unit]
    Description=redis-server
    After=network.target
    
    [Service]
    Type=forking
    ExecStart=/usr/local/bin/redis-server /路径/redis.conf
    PrivateTmp=true
    
    [Install]
    WantedBy=multi-user.target
    

    从新加载服务

    systemctl daemon-reload
    

    常用命令

    systemctl start redis  # 启动
    
    systemctl stop redis  # 停止
    
    systemctl restart redis  # 重启
    
    systemctl status redis  # 查看状态
    

    执行下面的命令,可以让redis开机自启:

    systemctl enable redis
    

3. Redis命令行客户端

  • Redis安装完成后就自带了命令行客户端:redis-cli,使用方式如下:

    redis-cli [options] [commonds]
    

    常见options:

    • -h 127.0.0.1:指定要连接的redis的IP地址
    • -p 6379:指定要连接的redis节点的端口,默认是6379
    • -a 1111111:指定redis的访问密码

    commonds是Redis的操作命令:

    • ping:与redis服务端做心跳测试,服务端正常会返回pong

4. Redis常见命令

  • redis的key一般为字符串,value有多种

  • String Hash List Set SortedSet GEO(经纬度) BitMap HyperLog
    
  • 可在官文进行学习 (https://redis.io/commands

    4.1 Key

    层级结构:用冒号隔开,例如:com:aaa:bbb

    4.2 通用命令

    • KEYS:查看符合模板的所有key
    • DEL: 删除一个指定的key
    • EXISTS:判断key是否存在
    • EXPIRE:给一个key设置有效期,有效期到期时该key会被自动删除
    • TTL:查看一个KEY的剩余有效期

    通过help [command] 可以查看一个命令的具体用法,例如:

    # 查看keys命令的帮助信息:
    127.0.0.1:6379> help keys   
    

    4.2 String类型

    分三类:

    • 普通String:hello
    • int :可自增自减 10
    • float:可自增自减 10.1

    常见命令:

    • SET:添加或者修改已经存在的一个String类型的键值对
    • GET:根据key获取String类型的value
    • MSET:批量添加多个String类型的键值对
    • MGET:根据多个key获取多个String类型的value
    • INCR:让一个整型的key自增1
    • INCRBY:让一个整型的key自增并指定步长
    • INCRBYFLOAT:让一个浮点类型的数字自增并指定步长
    • SETNX:添加一个String类型的键值对,前提是这个key不存在,否则不执行
    • SETEX:添加一个String类型的键值对,并且指定有效期

    4.3 Hash类型(散列)

    1. value类似Java的HashMap结构

    常见命令:

    • HSET key field value:添加或者修改hash类型key的field的值
    • HGET key field:获取一个hash类型key的field的值
    • HMSET:批量添加多个hash类型key的field的值
    • HMGET:批量获取多个hash类型key的field的值
    • HGETALL:获取一个hash类型的key中的所有的field和value
    • HKEYS:获取一个hash类型的key中的所有的field
    • HINCRBY:让一个hash类型key的字段值自增并指定步长
    • HSETNX:添加一个hash类型的key的field值,前提是这个field不存在,否则不执行

    4.4 List类型

    1. value类似java的linkedList

    常见命令:

    • LPUSH key element ... :向列表左侧插入一个或多个元素
    • LPOP key:移除并返回列表左侧的第一个元素,没有则返回nil
    • RPUSH key element ... :向列表右侧插入一个或多个元素
    • RPOP key:移除并返回列表右侧的第一个元素
    • LRANGE key star end:返回一段角标范围内的所有元素
    • BLPOP和BRPOP:与LPOP和RPOP类似,只不过在没有元素时等待指定时间,而不是直接返回nil

    4.5 Set类型

    1. value于java的HashSet类似

    常见命令:

    • SADD key member ... :向set中添加一个或多个元素
    • SREM key member ... : 移除set中的指定元素
    • SCARD key: 返回set中元素的个数
    • SISMEMBER key member:判断一个元素是否存在于set中
    • SMEMBERS:获取set中的所有元素
    • SINTER key1 key2 ... :求key1与key2的交集

    4.6 SortedSet类型

    1. values于java的TreeSet类似,但每个元素都有一个score属性,基于score来进行排序,默认升序,(要降序在命令的第一个字母Z的后面加上rev,例如:zrevrank)

    常见命令:

    • ZADD key score member:添加一个或多个元素到sorted set ,如果已经存在则更新其score值
    • ZREM key member:删除sorted set中的一个指定元素
    • ZSCORE key member : 获取sorted set中的指定元素的score值
    • ZRANK key member:获取sorted set 中的指定元素的排名
    • ZCARD key:获取sorted set中的元素个数
    • ZCOUNT key min max:统计score值在给定范围内的所有元素的个数
    • ZINCRBY key increment member:让sorted set中的指定元素自增,步长为指定的increment值
    • ZRANGE key min max:按照score排序后,获取指定排名范围内的元素
    • ZRANGEBYSCORE key min max:按照score排序后,获取指定score范围内的元素
    • ZDIFF、ZINTER、ZUNION:求差集、交集、并集

5.Redis的java客户端

5.1 Jedis客户端

  1. 引依赖

    <dependency>
        <groupId>redis.clients</groupId>
        <artifactId>jedis</artifactId>
        <version></version>
    </dependency>
    
  2. 建立连接

    void setUp() {
        // 1.建立连接
        Jedis jedis = new Jedis("ip地址", 端口号);
        // 2.设置密码
        jedis.auth(密码);
    }
    
  3. 线程不安全,需要手动创建线程池

    public class JedisConnectionFactory {
        private static final JedisPool jedisPool;
    
        static {
            // 配置连接池
            JedisPoolConfig poolConfig = new JedisPoolConfig();
            poolConfig.setMaxTotal(4);   //线程池最大连接数量
            poolConfig.setMaxIdle(4);    //最大空闲连接
            poolConfig.setMinIdle(0);    //最小空闲连接
            poolConfig.setMaxWaitMillis(1000); //最长等待时间 ms
            //创建连接池对象
            jedisPool = new JedisPool(poolConfig,"111.111.111.111",6379,800,"1111111");
        }
    
        public static Jedis getJedis(){
            return jedisPool.getResource();
        }
    
    }
    
    
posted @ 2023-07-11 07:36  strind  阅读(32)  评论(0)    收藏  举报