作者:
逍遥Sean
简介:一个主修Java的Web网站\游戏服务器后端开发者
主页:https://blog.csdn.net/Ureliable
觉得博主文章不错的话,可以三连支持一下~ 如有需要我的支持,请私信或评论留言!
前言:
本文是对redis的基本用法操作的整理。
如果需要在linux环境中搭建一个redis服务参考:
Linux环境下搭建使用缓存中间件Redis
如果需要掌握redis的常考知识点参考:
缓存中间件Redis常考知识点
一 十大数据类型
- 1.
String
字符串
hello world
- 5.
List
列表
[A>B>C>D]
- 6.
Set
集合
{A<B<C}
- 7.
Sorted Set
有序集合
{A:1,B:2,C:3}
- 4.
Hash
哈希表
{a:"hello",b:"world",c,"you"}
- 2.BitMap 位图
01100112121212
- 3.BitField 位域
{7912}{121321}{2132213}
- 8.Geospatial 地理空间
{A:(50.1,0.5)}
- 9.Hyperlog 基数统计
01101101 0110111 01101101
- 10.Stream 流 用于消息队列,消息持久化
{id1=time1.seq((a:"foo", a:"bar"))}
二 key的操作命令
-
keys *
查看所有key -
exists keyname
判断key是否存在 -
type keyname
看key的类型 -
del keyname
删除 -
unlink keyname
非阻塞删除 -
ttl keyname
查看过期时间 -
expire keyname
秒 设置过期时间 -
move keyname dbindex [0- 15]
移动key到数据库db中 -
select dbindex
切换数据库 -
dbsize
查看key的数量 -
flushdb
清空当前库 -
flushall
通杀全部库
三 数据操作命令
string
命令不区分大小写,内容区分大小写
help @String
set keyname helloworld
get keyname
批量操作
mset keyname1 hello keyname2 world
mget keyname1 keyname2
list
双端链表结构,容量是2的32次方 - 1,主要功能是push/pop,用于栈,队列,消息队列等场景
lpush lista 1 2 3
rpush listb 11 22 33
//-1表示全部遍历
lrange lista 0 -1
lpop lista
rpop lista
set
集合运算
sadd seta a b c 1 2
sadd setb 1 2 3 a x
// 只属于seta,但是不属于setb的,输出 b c
sdiff seta setb
// 并集
sunion seta setb
// 交集 输出 1 2 a
sinter seta setb
四 持久化
1. RDB
配置文件是redis.conf
# 十秒内有两次修改就会执行持久化保存
save 10 2
# 保存路径
dir /myredis/dumpfiles
# 文件名
dbfielname dump.rdb
手动保存
绝对不可以用save,要用bgsave
因为save会阻塞进程
bgsave使用fork的方式
fork:linux系统中,fork()会产生一个与父进程完全相同的子进程
2. AOF
保存操作命令
五 事务
单独的隔离操作
Redis的事务仅仅是保证事务里的操作会被连续独占的执行,redis命令执行是单线程架构,在执行完事务内所有指令前是不可能再去执行其他客户端的请求的
没有隔离级别的概念
因为事务提交前任何指令都不会被实际执行,也就不存在“事务内的查询要看到事务里的更新,在事务外查询不能看到”这种问题了。
不保证原子性
redis的事务不保证原子性,也就是不保证所有指令同时成功或者同时失败,只有决定是否开始执行全部指令的能力,没有执行到一半回滚的能力
排他性
redis会保证一个事务内的命令依次执行,而不会被其他命令插入
怎么玩
- discard 取消事务
- exec 执行
- multi 标记开始
- unwatch 取消监控
- watch 监控
正常执行
multi -> exec
放弃事务
multi -> discard
全体连坐
编译失败会全部失败
冤头债主
编译成功,但运行失败,只会导致错误的一条不执行,其他条正常执行
watch监控
乐观锁
CAS check and set
注:
悲观锁:每次拿数据都认为别人会修改,所以每次拿数据都会上锁,这样别人想拿这个数据就会block直到它拿到锁
乐观锁:每次拿数据都认为别人不会修改,所以每次拿数据都不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新数据
乐观锁政策:提交版本必须大于记录当前的版本才能执行更新
六 管道
把一组命令写进一个文件里cmd.txt,使用管道命令打包执行
cat cmd.txt | redis-cli -a root --pipe
七 发布订阅
用于消息队列,专门的事交给专门的中间件做,了解即可
八 复制
复制就是 replica 即 主从复制
master以写为主,slave以读为主
当master数据变化时,自动将新的数据异步同步到其他slave数据库
目的
读写分离
容灾恢复
数据备份
水平扩容支撑高并发
用法
配从库不配主库
权限细节很重要,使用密码校验文章来源:https://www.toymoban.com/news/detail-680998.html
基本操作命令文章来源地址https://www.toymoban.com/news/detail-680998.html
# 查看主从关系
info replication
# 配置文件中
replicaof 主库ip 主库端口
# 改换主库
slaveof 主库ip 主库端口
# 自己变更为主库
slaveof no one
到了这里,关于缓存中间件Redis必知必会的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!