Redis个人笔记(一)

Redis由来

  • 08 意大利 antirez 统计网站访问信息,使用 mysql(硬盘读写)进行记录。随着数据量大,产生性能瓶颈。产生将数据存储在内存中的想法。
  • 内存读写要快很多,需要添加持久化功能(数据备份)。
  • 全称 remote dictionary service
  • 端口 6379,(嘲笑歌星,暗语,愚蠢的意思)

Redis特性

  • 数据操作在内存,速度快
  • 命令执行的单线程
  • 结构简单,key-value
  • Redis keys的最大值:512M
  • Value也是有最大值的,根据数据类型不同,视情况而定
  • 功能丰富 持久化
  • io的多路复用(阻塞性io,非阻塞io,多路复用)
Redis有16个库,配置文件可配置最多16个(database 16)
配置文件 redis.conf
set huihui 666 //设置添加key-value
select 8 //切换到库8
库数据是隔离的
可以做分库处理,不建议使用Redis数据库进行分库
flush//全库清空(所有库)
get huihui //查询
rename huihui huihui1 //重命名
keys * //查询所有,不建议使用
expire huyihui 10 //设置过期时间
del huihui //删除

Redis常见数据类型以及应用场景解析

Redis一共8大数据类型,常用的5种。

String

value String 可以存number float bits等等

strlen huihui//获取字符长度
getrange huihui 0 5//截取字符串
set intkey 1
get intkey
incr intkey
incr——》主键
set f 2.6
incrbyfloat f 7.3
单线程 不用担心并发
setnx值存在的时候就不会成功——》分布式锁

应用场景
incr 主键 分布式ID 自增 统计数据 浏览数 点赞数
setnx 分布式锁
设置时间跟设置锁是两个命令 原子性 并发问题 必须一起执行
lua脚本 脚本语言 狗皮膏药,保证多个redis命令的原子性

Hash

hset huihui age 18
hget huihui age
hmset huihui1 age 18 addr changsha//批量设置
此处可以josn存为String,不过不适合修改单个值
hmget huihui age addr//批量获取
hgetall huihui //获取全部
hincrby huihui age 1//增加岁数
hexists huihui age//判断是否存在(返回0/1)
hdel huihui del//删除

应用场景
String能做的Hash能做
Hash能做的,String不一定

list

元素是可以重复的!!!有序的,从左到右有序的

lpush a
lpush b c
lrange queue 0 -1//结果"c","b","a"
rpush queue d e
lrange queue 0 -1//结果"c","b","a","d","e"

lpop queue//左侧出
rpop queue//右侧出

blpop queue 10//阻塞弹出等到有数据为止,不然等到设置的超时时间

应用场景
队列(有序)
刷朋友圈,按时间有顺序(lpop先进后出,rpop先进先出)

没法持久化,不建议用来做队列
消息中间件 kafka rabbit

set

set 不重复 无序
无序:放进去的时候无序,get时候是有序的

sadd huihuiset a b c d e f g
smembers huihuiset//出来是无序的,是因为放进去的时候无序,故执行多次,出来的顺序是一致的
srandmember huihuiset 2//随机取两个
spop huihuiset//随机弹一个(弹出后就不在原对象中)
sismember huihuiset a//判断元素是否存在
sdiff huihuiset huihuiset1
sdiff获取前面一个集合有且后面一个集合没有的数据
sunion huihuiset huihuiset1//取交集
sinter huihuiset huihuiset1//取并集

应用场景
无序:抽奖(抽奖不用random,原因慢,消耗性能),红包,点赞签到
交集,并集:共同关注的人,可能认识的人

zset

有序集合
score score相同的话 根据ascii码排序

zadd z1 10 a 20 b 30 c
zrange z1 0 -1//分数从小到大排
zrange根据索引获取数据
zrevrange z1 0 -1//从大到小排
zrangebyscore z1 20 30//按照分数取 "b" "c"
zrem z1 a//rdis zem 命令用于移除有序集中的一个或多个成员,不存在的成员将被忽略。当 key 存在但不是有序集类型时,返回一个错误。
zincrby z1 20 b//为b添加
zcount z1 40 50//返回40-50分的个数
zrank z1 b//返回索引

应用场景
统计
排名,排行榜

简历指导

技术点

  • 深入了解redis,看过redis源码,知道redis数据的应用场景
  • 不宜写过多无关的技术,大数据,前端写一条即可
  • 扬长避短
  • 足够的简约清晰

项目经验

  • 可以美化
  • 简约清晰,简约而不简单
  • 项目描述
    1,2,3
  • 责任描述
    1,2,3
  • 技术点 用到了什么技术,解决了什么问题,有什么优点
  • 面试时候,简历上的东西一定要非常熟悉

你可能感兴趣的:(redisjava程序员)