Redis基础详解

未分类2小时前更新 Trunks
3 0 0

一、Redis介绍

Redis是用C语言开发的一个开源的高性能键值对 (key-value)数据库,官方提供测试数据,50个并发执行100000个请求,读的速度是110000次/s,写的速度是81000次/s 且Redis通过提供多种键值数据类型来适应不同场景下的存储需求,目前为止Redlis支持的键值数据类型如下:

  • 1、字符串类型:String
  • 2、哈希类型:hash,hashmap
  • 3、列表类型:list,linkedList
  • 4、集合类型:set,HashSet
  • 5、有序(排序)集合类型:sortedset(ZSet),TreeSet

Redis 的应用场景:

  • 缓存( 例如:数据查询,短连接,新闻内容,商品内容等 )
  • 聊天室的在线好友列表
  • 任务队列( 例如:秒杀,抢购,抢票等 )
  • 应用排行榜
  • 数据过期处理( 可以精确到毫秒 )
  • 分布式集群架构中的 session 分离,sso 单点登录

二、Redis 安装

三、Redis 常问知识

  • 1、Redis 是单线程机制
  • 2、Redis 默认拥有 16 个数据库,数据库编号从 0 开始,默认使用 0 号数据库
  • 3、Redis 中所有数据库使用同一个密码,默认没有密码,Redis 认为安全层面应该由 Linux来 保证
  • 4、Redis 中所有索引都是从 0 开始
  • 5、Redis 默认端口是 6379
  • 6、Redis 的 ke y和 value 最大可支持 512 M
  • 7、Redis-Cluster 中将分为 16384 个哈希槽( hash slot )

常见命令:

使用 select 数据库编号 可以切换使用的数据库

dbsize 命令查看当前数据库key的数量

keys * 命令查看当前数据库所有的key

keys ?? 一个问号匹配一个字符串

flushdb 命令清空当前数据库

flushall 命令清空所有数据库

set key value 存储值,设置值时如果key存在就会覆盖

get key 获取值

del key 删除值

type key 查看 key 的 value 类型

strlen key 获取字符串的长度

ttl key 查看剩余时间,如果是 “ -2 ” 这种类型就代表失效了

四、Redis 常见数据结构

Redis 数据存储格式:

redis 是 Map 类型的存储方式,其中所有的数据是采用 Key:Value 的形式存储。我们讨论的数据类型指的是存储数据的类型,也就是 value 部分的类型。key 部分永远都是字符串

Redis 存储 key:value 格式数据,key 为字符串,value 有 5 种数据类型。

value 的数据结构:

  • 1、字符串类型:String
  • 2、哈希类型:hash,hashmap
  • 3、列表类型(支持重复元素):list,linkedList
  • 4、集合类型(不允许重复元素):set,HashSet
  • 5、有序(排序)集合类型(不允许重复元素,且元素有顺序):sortedset(ZSet),TreeSet

1、String 类型

字符串类型是 redis 最基本的类型,他允许存储任何形式的字符串,可以存储JSON转换过后的字符串。

一个字符串允许最大的存储容量为 512M。

可存储 “ 对象序列化 ”,“ Java 序列化 ”,“ 二进制的字符串 ”,“ Json 字符串 ”

基本操作

字符串常用操作

redis
// 字符串常用操作
// 1、存入字符串键值对
SET key value
// 2、获取一个字符串键值
GET key
// 3、批量存储字符串键值对
MSET key value [key value ...]
// 4、批量过去字符串键值
MGET key [key ...]
// 5、删除一个键或者多个键
DEL key [key ...]
// 6、设置一个键的过期时间(秒)
EXPIRE key seconds

普通的单值存储 key-value

redis
// 1、单值缓存
SET key value
GET key
// 2、对象缓存
SET user:1 value(JSON格式数据)
MSET user:1:name zs user:1:balance 6666
MGET user:1:name user:1:balance

计数器 incr key 原子加,比如统计文章的阅读量

redis
// 原子加减
// 1、将key中存储的数字值加1
INCR key
// 2、将key中存储的数字值减1
DECR key
// 3、将key所存储的值加上increment(依次递增指定的数量)
INCRBY key increment
// 4、将key所存储的值减去decrement(依次递减指定的数量)
DECRBY key decrement
// 计数器
INCR article:readcount:{文章id}
GET article:readcount:{文章id}

分布式锁 setnx key value

redis
// 分布式锁
// 1、返回1代表获取锁成功,返回0代表获取锁失败
SETNX product:1001 true
// 2、执行业务操作
// 3、执行完业务释放锁
DEL product:1001
// 防止程序意外终止导致死锁
SET product:1001 true ex 10 nx
// key设置为多少秒(seconds)过期,value关联key
SETEX key seconds value
// 只有key不存在时设置可以的值
SETNX key value
// 分布式系统全局序列号
// redis批量生成序列号提升性能
INCRBY orderId 1000

分布式 session

redis
// Web集群session共享
spring session + redis实现session共享
© 版权声明

相关文章

暂无评论

暂无评论...