Redis-----什么是Redis?

什么是Redis?

redis是一个基于内存的key-value结构数据库。

  • 基于内存存储,读写性能高
  • 适合存储热点数据(热点商品、资讯、新闻)
  • 企业应用广泛

Redis入门

  • redis简介

    redis是一个开源的内存中的数据结构存储系统,数据库、缓存和消息中间件 (非关系型数据库)

    • 关系型数据库(RDBMS)
      • mysql
      • oracle
      • DB2
      • SQLServer
    • 非关系型数据库(NoSql)
      • redis
      • MongoDB
      • memcached
    • redis应用场景
      • 缓存
      • 任务队列
      • 消息队列
      • 分布式锁
  • redis下载与安装

    • window下安装(比较简单)
    • Linux下安装
      1. 将redis安装包上传到Linux
      2. 解压安装包,命令: tar -zxvf redis -C /usr/local
      3. 安装redis的依赖环境gcc ,命令:yum install gcc-c++
      4. 进入/usr/local/redis-4.0.0,进行编译,命令:make
      5. 进入redis的src目录,进行安装,命令:make install
  • redis服务启动与停止

    • Linux中redis服务启动,可以使用redis-server,默认端口号为6379
    • ctrl+c停止redis服务

注意:如果需要进行远程访问,这时我们需要进行redis远程校验密码设置

  1. 进行redis校验密码设置:(操作文件redis.conf)将requiredpass删除注释,后面设置密码
    Redis-----什么是Redis?_第1张图片

  2. 开启redis远程访问服务 (操作文件redis.conf)将bind 127.0.0.1 进行注释,这样就可以远程访问了!!!注意关防火墙,或者开放所需要的端口

Redis-----什么是Redis?_第2张图片

./redis-cli -h localhost -p 6379 -a 123456 本地访问(如果远程访问,将localhost改为ip地址)

访问时报错

(error) NOAUTH Authentication required.

可以输入命令:auth 123456 (密码)

数据类型

  • 介绍

    redis存储的是key-value结构的数据,其中key是字符串类型,value有5种常用的数据类型:

    1. 字符串 String
    2. 哈希 hash
    3. 列表 list
    4. 集合 set
    5. 有序集合 sorted set
  • redis五种常用数据类型

    1. string普通字符串,常用 (key:string)
    2. hash 适合存储对象 (key:{(key:value),(key:value),…})
    3. list 按照插入顺序排序,可以有重复元素 (key:[str,str2,…])
    4. set无序集合,没有重复元素
    5. sorted set有序集合,没有重复元素

常用命令

  • 字符串String操作命令

    • set key value 设置指定key的值
    • get key 获取指定key的值
    • setex key seconds value 设置指定key的值,并将key的过期时间设为seconds秒
    • setnx key value 只有在key不存在时设置key的值
  • 哈希hash操作命令

    • redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象,常用命令:

      hset key field value 将哈希表key中的字段field的值设为value

      hget key field 获取存储在哈希表中的指定字段的值

      hdel key field 删除存储在哈希表中的指定字段

      hkeys key 获取哈希表中所有字段

      hvals key 获取哈希表中所有值

      hgetall key 获取在哈希表中指定key的所有字段和值

  • 列表list操作命令

    • redis列表是简单的字符串列表,按照插入顺序排序,常用命令:

      lpush key value1 [value2] 将一个或多个值插入到列表头部

      lrange key start stop 获取列表指定范围内的元素

      rpop key 移除并获取列表最后一个元素

      llen key 获取列表长度

      brpop key1[key2] timeout 移出并获取的最后一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止

  • 集合set操作命令

    • redis set 是string类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据,常用命令:

      sadd key member1 [member2] 向集合添加一个或多个成员

      smembers key 返回集合中的所有成员

      scard key 获取集合的成员数

      sinter key1 [key2] 返回给定所有集合的交集

      sunion key1 [key2] 返回所有给定集合的并集

      sdiff key1 [key2] 返回给定所有集合的差集

      srem key member1 [member2] 移除集合中一个或多个成员

  • 有序集合sorted set操作命令

    • redis sorted set 有序集合是string类型元素的集合,且不允许重复的成员。每个元素都会关联一个double类型的分数(score)。redis正是通过分数来为集合中的成员进行从小到大排序。有序集合的成员是唯一的,但分数却可以重复。

      常用命令:

      zadd key score1 member1 [score2 member2] 向有序集合添加一个或多个成员,或者更新已存在成员的分数

      zrange key start stop [withscores] 通过索引区间返回有序集合中指定区间内的成员

      zincrby key increment member 有序集合中对指定成员的分数加上增量increment

      zrem key member [member …] 移除有序集合中的一个或者多个成员

  • 通用命令

    keys pattern 查找所有符合给定模式(pattern)的key

    exists key 检查给定key是否存在

    type key 返回key所存储的值的类型

    ttl key 返回给定key的所剩生存时间(TTL,time to live),以秒为单位

    del key 该命令用于在key存在是删除key

在java中操作Redis

  • 介绍

    • Redis的java客户端很多,官方推荐的有三种:
      • Jedis
      • Lettuce
      • Redisson

    Spring对Redis客户端进行了整合,提供了spring data redis ,在spring boot项目中还提供了对应的starter,即spring-boot-starter-data-redis

  • Jedis

    Jedis的maven坐标:

    ​ redis.clients

    ​ jedis

    ​ 2.8.0

    使用Jedis操作redis的步骤:

    • 获取连接
    • 执行操作
    • 关闭连接
  • Spring Data Redis

    在springboot项目中,可以使用spring data redis来来简化redis操作,maven坐标:

    <dependency>
       <groupId>org.springframework.bootgroupId>
       <artifactId>spring-boot-starter-data-redisartifactId>
    dependency>
    

    Spring data redis中提供了一个高度封装的类:RedisTemplate,针对jedis客户端中大量api进行了归类封装,将同一类型操作封装为operation接口,具体分裂如下:

    • ValueOperations:简单K-V操作
    • SetOperations:set类型数据操作
    • ZSetOperations:zset类型数据操作
    • HashOperations:针对map类型的数据操作
    • ListOperations:针对list类型的数据操作

    在程序中使用redisTemplate时,程序设置key 和value时默认调用序列化,从而导致值发生改变,这时需要更改key序列化器,而value不需要更改序列化器,因为value在get的时候会进行反序列化。

你可能感兴趣的:(redis,redis)