Redis(补充一)

本文详细介绍了如何使用Docker安装Redis,并解析了Redis的核心配置,包括后台运行、端口绑定、密码设置等。同时,文章还涵盖了Redis的持久化策略、常用命令以及不同数据类型的应用场景,如String、List、Hash、Set和SortedSet,提供了丰富的操作示例。
摘要由CSDN通过智能技术生成

1.docker 安装 Redis

docker run -itd --name xdclass-redis -p 6379:6379 redis --requirepass 123456

  • -itd 是名称
  • -p 对应开放的端口
  • -requirepass 密码

docker 查看 端口是否 开了

安装

yum install -y lsof

查看

lsof -i:6379

2.核心配置讲解

  • 配置

    • daemonize yes 配置后台运⾏,默认no
    • bind 绑定指定ip访问,0.0.0.0是不限制,配置多个ip例 ⼦ 12.13.432.12 31.12.43.13 ⽤空格隔开
    • port 端⼝号 默认6379
    • requirepass 密码配置
    • dbfilename 配置redis持久化⽂件名称
    • dbfilename 配置redis持久化⽂件名称
    • save 配置redis持久化机制
  • 创建⽬录

    • ⽇志 /usr/local/redis/log
    • 数据 /usr/local/redis/data
    • 数据 /usr/local/redis/data
  • 创建⾃定义配置⽂件 (使⽤⾃带的也⾏)

#任何ip可以访问
bind 0.0.0.0
#守护进程
daemonize yes
#密码
requirepass 123456
#⽇志⽂件
logfile "/usr/local/redis/log/redis.log"
#持久化⽂件名称
dbfilename xdclass.rdb
#持久化⽂件存储路径
dir /usr/local/redis/data
#持久化策略, 10秒内有个1个key改动,执⾏快照
save 10 1

2.类型使用场景

通用命令

  • exists 判断key是否存在
  • del 删除key
  • type 判断key类型
  • ttl 查看key存活时间

1. String 应用场景和常用命令

简介: 存储字符串类型的key-value

应用场景
  • 验证码
  • 计数器、发号器
  • 订单重复提交令牌
  • 热点商品卡片(序列化json对象存储)
  • 分布式锁
常用命令
set/get 设置和获取 key-value
mget/mset(设置、获取多个key的值)
  • 批量设置或获取多个key的值
  • MGET key [key …]
  • MSET key value [key value …]
incr(+1 返回新的值)
  • incr对key对应的值进行加1操作,并返回新的值;
  • incr key
incrby(设置key的值 增量)
  • 将key对应的数字加increment。如果key不存在,操作之前,key就会被置为0
  • incrby key increment
setex (设置时间)
  • 设置key对应字符串value,并且设置key在给定的seconds时间之后超时过期,原子操作
  • SETEX key seconds value
setnx (重点)锁
  • 将key设置值为value,如果key不存在等同SET命令。 当key存在时什么也不做, 是set if not exists的简写。
  • SETNX key value
getset(修改key的值返回旧的值)
  • 设置key的值,并返回key旧的值
  • GETSET KEY_NAME VALUE

注意:

值的长度不能超过512 MB

key命名规范,不要过长,冒号分割,业务名:表名:ID

2.List 应用场景和常用命令

简介:

  • 字符串列表,按照插入顺序排序
  • 双向链表,插入删除时间复杂度O(1)快,查找为O(n)慢
应用场景:
  • 简单队列
  • 最新评论列表
  • 非实时排序榜:定时计算榜单,如手机日销榜单
常用命令:
lpush(头插)
  • 将一个或多个值插入到列表头部
  • LPUSH key value1 [value2]
rpop(删除最后一个元素)
  • 移除并获取列表最后一个元素
  • RPOP key
llen(查询长度)
  • 获取列表长度
  • LLEN key
lindex(获取元素)
  • 通过索引获取列表中的元素
  • LINDEX key index
lrange(获取指定范围元素)
  • 获取key对应的list的指定下标范围的元素, 其中 0 表示列表的第一个元素, 1 表示列表的第二个元素, -1表示获取所有元素( lrange key 0 -1);
  • LRANGE key start stop
rpush(尾插)
  • 在key对应的list的尾部添加一个元素
  • RPUSH key value1 [value2]
pop(删除key 一个尾部元素)
  • 从key对应的list的尾部删除一个元素,并返回该元素

  • LPOP key

  • brpop

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

  • BRPOP LIST1 LIST2 … LISTN TIMEOUT

lrem(删除指定个数)
  • 移除元素,可以指定移除个数
  • LREM KEY COUNT VALUE

注意:

  • 通常添加一个元素到列表的头部(左边)或者尾部(右边)

  • 存储的都是string字符串类型

  • 支持分页操作,高并发项目中,第一页数据都是来源list,第二页和更多信息则是通过数据库加载

  • 一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表不超过40亿个元素)

3. Hash 应用场景和常用命令

简介:是一个string类型的field和value的映射表,hash特别适合用于存储对象

应用场景:
  • 购物车
  • 用户个人信息
  • 商品详情
常用命令:
hset(修改指定值)
  • 设置 key 指定的哈希集中指定字段的值
  • HSET key field value
hget(获取字段所关联的值)
  • 返回 key 指定的哈希集中该字段所关联的值
  • HGET key field
hgetall(获取key 所有字段和值)
  • 返回 key 指定的哈希集中所有的字段和值
  • HGETALL key
hdel(删除指定字段)
  • 删除哈希表 key 中的一个或多个指定字段,不存在的字段将被忽略。
  • HDEL key field [field …]
hexists(查询fieid是否存在)
  • 返回hash里面field是否存在
  • HEXISTS key field
hincrby(增加指定数值)
  • 增加 key 指定的哈希集中指定字段的数值, 如果是-1 则是递减
  • HINCRBY key field increment
hmset(修改多个指定值)
  • 设置 key 指定的哈希集中指定字段的值
  • HMSET key field value [field value …]
hmget(获取 指定字段值)
  • 返回 key 指定的哈希集中指定字段的值
  • HMGET key field [field …]

注意:每个 hash 可以存储 232 - 1 键值对(40多亿)最好1K

4.Set 应用场景和常用命令

4.1 简介:

将一个或多个成员元素加入到集合中,已经存在于集合的成员元素将被忽略

4.2 应用场景:
  • 去重
  • 社交应用关注、粉丝、共同好友
  • 统计网站的PV、UV、IP
  • 大数据里面的用户画像标签集合
4.3 常用命令:
sadd(添加多个元素到key)
  • 添加一个或多个指定的member元素到集合的 key中.指定的一个或者多个元素member 如果已经在集合key中存在则忽略
  • SADD key member [member …]
scard(获取key中的基数)
  • 返回集合存储的key的基数 (集合元素的数量).
  • SCARD key
sdiff(获取差值)
  • 返回的集合元素是第一个key的集合与后面所有key的集合的差集
  • SDIFF key [key …]
sinter(获取集合key的交集成员)
  • 返回指定所有的集合的成员的交集.
  • SINTER key [key …]
sismeber(查询成员是否在集合key)
  • 返回成员 member 是否是存储的集合 key的成员.
  • SISMEMBER key member
srem(移除key中指定的元素)
  • 在key集合中移除指定的元素. 如果指定的元素不是key集合中的元素则忽略
  • SREM key member [member …]
sunion(获取集合key的并集成员)
  • 返回给定的多个集合的并集中的所有成员.
  • SUNION key [key …]
smembers(获取key的所有值)
  • 返回key集合所有的元素.
  • SMEMBERS key
4.4 注意:

集合是通过哈希表实现的

5. Sorted Set 应用场景和常用命令

5.1 简介:

用于将一个或多个成员元素及其分数值加入到有序集当中

如果某个成员已经是有序集的成员,那么更新这个成员的分数值,分数值可以是整数值或双精度浮点数。

有序集合可以看做是在Set集合的的基础上为集合中的每个元素维护了一个顺序值: score,它允许集合中的元素可以按照score进行排序

5.2 应用场景

  • 实时排行榜:商品热销榜、体育类应用热门球队、积分榜
  • 优先级任务、队列
  • 朋友圈 文章点赞-取消,逻辑:用户只能点赞或取消,统计一篇文章被点赞了多少次,可以直接取里面有多少个成员

5.3 常用命令

zadd(有序集合添加)
  • 向有序集合添加一个或多个成员,或者更新已存在成员的分数
  • ZADD key score1 member1 [score2 member2]
zcard(获取有序集合数)
  • 获取有序集合的成员数
  • ZCARD key
zcount(计算区间分数的成员数)
  • 计算在有序集合中指定区间分数的成员数

  • ZCOUNT key min max

zincrby(成员分数加法)
  • 有序集合中对指定成员的分数加上增量 increment

  • ZINCRBY key increment member

zrange(找区间数排序小到大)
  • 通过索引区间返回有序集合指定区间内的成员, 成员的位置按分数值递增(从小到大)来排序
  • ZRANGE key start stop [WITHSCORES]
zrevrange(找区间数排序大到小)
  • 通过索引区间返回有序集合指定区间内的成员, 成员的位置按分数值递减(从大到小)来排序
  • ZREVRANGE key start stop [WITHSCORES]
zrevrank(成员按分数排序大到小)
  • 返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序
  • ZREVRANK key member
zrank(成员按分数排序小到大)
  • 返回有序集key中成员member的排名。其中有序集成员按score值递增(从小到大)顺序排列
  • ZRANK key member
zrem(删除成员)
  • 移除有序集合中的一个或多个成员
  • ZREM key member [member …]
zscore(获取成员分数值)
  • 返回有序集中,成员的分数值
  • ZSCORE key member
注意:

底层使用到了Ziplist压缩列表和“跳跃表”两种存储结构

如果重复添加相同的数据,score值将被反复覆盖,保留最后一次修改的结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值