蚊子的redis笔记 - 基础篇

缓存介绍

缓存架构设计

在这里插入图片描述

缓存机制

缓存的目的就是减少访问物理的设备的访问频次.缓存中的数据就是数据库中的数据.缓存中的数据保存在内存中.目的能够快速实现数据响应.

引入缓存后问题

  1. 缓存中使用什么数据结构存储?采用k-v格式存储.同时key禁止重复
    定义Key策略:字符串_ID
  2. 如果缓存服务器宕机,则内存中的数据都将丢失.将内存中的数据定期持久化.
  3. 缓存中的数据如何保证与数据库的数据一致???数据一致性
    如果数据库数据发生变化.则应该同步缓存中的数据(代码维护–AOP)
  4. 缓存中的数据如何控制大小. 1G
    策略:将最近最少使用的数据清空(LRU算法)
    内存管理的一种页面置换算法,对于在内存中但又不用的数据块(内存块)叫做LRU,操作系统会根据哪些数据属于LRU而将其移出内存而腾出空间来加载另外的数据.
    5.如何保证缓存的查询更快???C语言

Redis介绍

Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions) 和不同级别的 磁盘持久化(persistence),并通过 Redis哨兵(Sentinel)和自动分区(Cluster)提供高可用性(high availability)。

Redis安装

Redis下载

在这里插入图片描述

Redis安装

  1. 编译redismake (gcc编译C语言环境)
    在这里插入图片描述
  2. 安装redis
    make install
    在这里插入图片描述

Redis启动

  1. redis-server
  2. redis-server &表示还有后续操作(回车后生效)
    以上的2种启动方式,都有默认的配置远程服务不能链接默认的redis
  3. redis-server redis.conf根据配置文件方式启动redis

关闭:

  1. kill -9 6139
  2. redis-cli -p 6379 shutdown
  3. redis-cli shutdown 关闭端口为6379的redis
    在这里插入图片描述

修改redis配置文件

vim redis.conf

  1. 取消IP绑定
    在这里插入图片描述
  2. 关闭保护模式
    在这里插入图片描述
  3. 开启后台启动
    在这里插入图片描述

Redis命令

前提:需要通过redis客户端操作命令
命令:redis-cli -p 6379

String类型

指令 | 说明 | 案例
set | 设定key的值 | set name tom
get | 获取指定 key 的值 | get name
strlen | 获取key值的长度 | strlen name
exists | 检查给定 key 是否存在 | exists name 返回1存在 0不存在
del | 删除指定的key/key1 key2 | del name1 name2
keys | 命令用于查找所有符合给定模式 pattern 的 key | Keys * 查询全部的key值;Keys n?me 占位符;Keys name* 以name开头的key
mset | 赋值多个key-value | mset key1 value1 key2 value2 key3 value3 同时赋值多个值
mget | 获取多个key | mget key1 key2 key3
append | 对指定的key进行追加 | append key 123456 value123456; append key " 123456"; value 123456中间多一个空格
Type | 查看key的类型 | Type key1; 127.0.0.1:6379> TYPE key1string
Flushdb | 清空当前数据库 | Flushdb 清空数据库
Select | 切换数据库 | Select 0-15 redis一共有16个数据库
FLUSHALL | 清空全部数据库数据 | flushall
Incr | 自动增长1 | Incr num 数据会自动加1;Incr string 数据库会报错
Decr | 自动减1 | Decr name 数据会自动减1
incrby | 指定步长自增 | Incrby 2 每次自增2
Decrby | 指定步长自减 | Decrby 2每次减2
Expire | 指定key的失效时间单位是秒(s) | EXPIRE name15 15秒后数据失效
Ttl | 查看key的剩余存活时间 | Ttl name ;-2表示失效;-1没有失效时间
Pexpire | 设置失效时间(毫秒) | Pexpire name 1000 用于秒杀业务
Persist | 撤销失效时间 |撤销失效时间

哈希表

指令 | 说明 | 案例
hset | Hset key值 属性名 属性值 | Hset user id 1;Hset user name tom;设置id和name的属性值
hget | 获取指定 key的属性值 | Hget user name 获取name属性值;
hmset | Hmset user key value1 key2 value2 | hmset user id 1 name tom age 18
hmget | hmget user id name age | hmget user id name age 获取user对象的id,name,age的属性值
hgetall | 取出key的全部字段值和属性值 | hgetall user
hdel | 删除key的指定字段 | 删除key的指定字段
hkeys | 查看key的全部字段 | hkeys user
hvals | 查看key的全部值 | Hvals user
hlen | 查看key的字段数 | Hlen user 查看user的字段数

List列表类型

List列表类型(list)是一个存储有序的元素的集合类型.List数据类型底层是一个双端列表.可以从左右分别进行写入操作
双端列表的数据特点:查询两端数据时速度较快,查询中间数据较慢.

指令 | 说明 | 案例
lpush | 将一个或多个值插入到列表左部插入 | LPUSH list1 1 2 3 4
rpush | 在列表中添加一个或多个从列表右侧插入 | RPUSH list1 5 6 7 8
lpop | 从列表左侧移除元素,并且返回结果 | LPOP list1
rpop | 从列表右侧移除元素,并且返回结果 | RPOP list1
llen | 获取list集合的元素个数 | Llen list1
Lrange | 获取指定区间内的片段值 | LRANGE list1 0 3; 获取从左数第1个到第4个值; LRANGE list1 -3 -1; 从右数第三个到第一个数据; Lrange list1 0 -1; 查询全部列表数据
Lrem | 删除列表中指定的值 Irem key count value;当count>0,从左开始删除前count个值为value的元素; 当count<0,从右侧开始删除前count个值为value的元素
当count=0时,删除所有value的元素 | LREM list1 2 2; 从左数前2个为2的元素
; LREM list1 -2 3;从右数前2个为3的元素; LREM list1 0 4;删除全部为4的元素
Lindex | 根据指定索引值查询元素 | LINDEX list1 0;查找索引值为0的值;LINDEX list1 -1;查询最右边的值
Lset | 为指定索引赋值 | LSET list1 0 10
LINSERT | LINSERT key beforevalue1value2;在value1之前插入value2 | LINSERT list1 after 1 2;LINSERT list1 before 10 100;从左数第一个为10的元素前插入100;LINSERT list1 after 1 2;从左数第一个为1的值之后插入2

Redis事务命令

业务需求:

  1. redis可以当做数据库使用.
  2. 有时插入缓存时,可能多数据一起插入所以需要事务控制

说明:redis中操作可以添加事务的支持.一项任务可以由多个redis命令完成,如果有一个命令失败导致入库失败时.需要实现事务回滚.

命令 | 说明 | 案例
multi | 标记一个事务开始 | 127.0.0.1:6379> MULTI OK
exec | 执行所有multi之后发的命令 | 127.0.0.1:6379> EXEC OK
discard | 丢弃所有multi之后发的命令 |

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值