Redis快速入门(详细教程)

本文详细介绍了Redis的入门,包括Redis的主要应用场景、安装步骤(直接安装与Docker-Compose安装)、常用命令(如Key-Value结构、String、Hash、List等)以及Java操作Redis的方法。同时,讲解了Redis的配置如AUTH、事务、持久化(RDB与AOF)、主从架构和集群,最后讨论了Redis的常见问题,如淘汰机制和缓存问题的解决方案。
摘要由CSDN通过智能技术生成

一、Redis介绍

1.主要解决的问题:

  1. 用户数量大,请求量大,数据库读写压力大。
  2. 多台应用服务器之间数据不同步。
  3. 多台服务器之间的锁,已经不存在互斥性,无法保障线程安全的操作。

2.Redis-NoSQL数据库

  • Redis是一款NoSql数据库(非关系型数据库)
  • Key-Value:Redis。
  • 文档型:ElasticSearch,Solr,MongoDB
  • 面向列:HBASE, Cassandra
  • 图形化:Neo4j
  • 除了关系型数据库都是菲关系型数据库。
  • NoSQL只是一种概念,泛指非关系非关系型数据库,和关系型数据库做区分

二、Redis安装

1. 官网下载直接安装 Redis下载地址

2.使用Docker-Compose安装

2.1 docker-compose.yml文件

version: '3.1'
services:
  redis:
    image: daocloud.io/library/redis:5.0.7
    restart: always
    container_name: redis
    environment:
      - TZ=Asia/Shanghai
    ports:
      -6379:6379

1.在LInux下建立docker-compose.yml文件
2.使用docker-compose up -d 命令启动docker容器

2.2使用redis-cli连接Redis

1.进入容器内部:docker exec -it 容器id bash
2.在容器内部使用redis-cli连接Redis
在这里插入图片描述

3.使用图形化工具连接Redis

下载链接
redis图像化管理工具

三、Redis常用命令

1.Redis数据的存储结构

常用的五种数据结构:

  • key-string:一个key对应一个值

  • key-hash:一个key对应一个Map

  • key-list:一个key对用一个列表

  • key-set:一个key对应一个集合

  • key-zset:一个key对应一个有序的集合
    另外三种数据结构

  • HyperLogLog:计算近似值

  • GEO:地理位置

  • BIT:一般存储的是一个字符串,存储的是一个byte[]。

  • key-string:最常用,一般用于存储一个值。

  • key-hash:存储一个对象数据

  • key-list:使用list结构实现栈和队列结构

  • key-zset:排行榜,积分存储等操作

2.string常用的命令

# 1. 添加值
set key value
# 2. 取值
get key
# 3. 批量操作
mset key value [key value ...]
mget key [key ...]
# 4. 自增命令(自增1)
incr key
# 5. 自建命令(自减1)
decr key
# 6. 自增|自减指定数量
incrby key increment
decrby key increment
# 7. 设置值的同时,指定生存时间(每次向Redis中添加数据时,尽量设置生存时间)
setex key second value
# 8. 设置值,如果当前key不存在的话(存在的话,什么也不做,如果不存在,同set命令)
setnx key value
# 9. 在key对应的value后,追加内容(相当于字符串拼接)
append key value
# 10. 查看value字符串的长度
strlen key

3.hash常用命令

# 1. 存储数据
hset key field value
# 2. 获取数据
hget key field
# 3. 批量操作
hmset key field value [field value ...]
hmget key field [field]
# 4. 自增(指定自增的值)
hincrby key field increment
# 5. 设置值(如果可以-field不存在,就正常添加,存在,什么也不做)
hsetnx key field value
# 6. 检查filed是否存在
hexists key field
# 7. 删除key对应的field,可以删除多个
hdel key field [field ...]
# 8. 获取当前hash结构中全部的field和value
hgetall key
# 9. 获取当前hash结构汇总全部的field
hkeys key
# 10. 获取当前hash结构中全部的value
hvals key
# 11. 获取当前hash结构中field的数量
hlen key

4、 list常用命令

# 1. 存储数据
# 左插入
lpush key value [value ...]
# 右插入
rpush key value [value ...]
# 2. 存储数据(如果key不存在,什么事都不做,如果key存在,但不是list结构,什么也不做)
lpushx key value
rpushx key value  
# 3. 修改数据(在存储数据时,指定好你的索引位置,覆盖之前索引位置的数据,index超出整个列表的长度会失败)
lset key index value
# 4. 出栈方式获取数据(左侧出栈吗,右侧出栈)
lpop key
rpop key
# 5. 获取指定索引范围内的数据(start从0开始,stop输入-1,代表最后一个数,-2代表倒数第二个数)
lrange key start stop
# 6. 获取指定索引位置的数据
lindex key index
# 7. 获取整个列表的长度
llen key
# 8.删除列表中的数据(他是删除当前列表中的count个value值,count > 0从左侧向右删除,count < 0 从右向左删除,count == 0 删除全部的value)
lrem key count value
# 9. 保留列表中的数据(保留你指定索引范围内的数据,超过索引范围被移除掉)
ltrim key start stop
# 10. 将一个列表中的最后一个数据,插入到另外一个列表的头部位置
rpoplpush list1 list2

5、set常用命令

# 1. 存储数据
sadd key member [member ...]
# 2. 获取数据(获取全部数据)
smembers key
# 3. 随机获取一个数据(获取的同时,移除数据,count默认为1,代表弹出的数据量)
spop key [count]
# 4. 交集(去多个set集合交集)
sinter set1 set2
# 5. 并集(获取全部集合中的数据)
sunion set1 set2
# 6. 差集(获取多个集合中不一样的数据)
sdiff set1 set2
# 7. 删除数据
srem key member [member ...]
# 8. 查看当前set集合中是否包含此值
sismember key member

6 、zset的常用命令

# 1. 添加数据(score必须是数值。member不允许重复)
zadd key score member [score member]
# 2. 修改member的分数(如果member是存在于key中的,正常增加分数,如果member不存在,这个命令就相当于zadd)
zincrby key increment member
# 3. 查看指定的member的分数
zscore key member
# 4. 获取zset中数据的数量
zcard key
# 5. 根据score的范围查询member数量
zcount key min max
# 6. 删除zset中的成员
zrem key member [member ...]
# 7. 根据分数从小到大排序,获取指定范围内的数据(withscores如果添加这个参数,那么就会返回member对应的分数)
zrang key start stop [withscores]
# 8. 根据分数从大到小排序,获取指定范围内的数据(withscores如果添加这个参数,那么就会返回member对应的分数)
zrevrange key start stop [withscores]
# 9. 根据分数的返回去获取member(withscores代表同时返回score,添加limit,和MySQL中一样,如果不希望等于min或者max的值被查出来可以采用‘(分数’相当于 < 但是不等于的方式,最大值和最小值使用 +inf 和 -inf来表示)
zrangebyscore key min max [withscores] [limit offset count]
# 10. 根据分数的返回去获取member(withscores代表同时返回score,添加limit,就和mysql中一样)
zrangbyscore key max min[withscores] [limit offset count]

7、key的常用命令

# 1. 查看Redis中的全部的key (pattern: *,xxx*,*xxx)
keys pattern
# 2. 查看某一个key是否存在(1 - 存在,0 - 不存在)
exists key
# 3. 删除key
del key [key ...]
# 4. 设置key的生存时间,单位秒,单位毫秒,设置过期时间
expire key second
pexpire key milliseconds
# 5. 设置key的生存时间,单位为秒,单位为毫秒,设置能活到啥时候
expireat key timestamp
pexpireat key milliseconds
# 6. 查看key的剩余生存时间,单位秒,单位毫秒(-2 - 可以不存在,-1 - key没有设置生存时间,具体剩余的生存时间)
ttl key
pttl key
# 7 移除key的生存时间(1 - 移除成功, 0 - key不存在生存时间,key不存在)
persist key
# 8. 选择操作的库
select 0~15
# 9. 移动key到另外一个库中
move key db

8、Redis库常用命令

# 1. 清空当前所在的数据库
flushdb
# 2. 清空全部数据库
flushall
# 3. 查看当前数据库中有多少key
dbsize
# 4. 查看最后一次操作的时间(返回时间戳)
lastsave
# 5. 实时监控Redis服务接收到的命令
monitor

四、Java连接Redis

1.Jedis连接Redis

1.1 idea创建springboot项目添加依赖

        <!--redis-->
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>3.2.0</version>
            <type>jar</type>
            <scope>compile</scope>
        </dependency>
        <!--lombok-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            
  • 3
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值