Redis

Redis:

Redis介绍

NoSql基本概念:

非关系型数据库。解决高并发/高可用/高扩展性等一系列问题产生的数据库解决方案。不能完全替代关系型数据库,只能作为关系型数据库的一个良好的补充

NoSql分类:

  • 键值对形式(Key-Value)存储数据库

典型应用:内容缓存,主要用于处理大量数据的高访问负载。数据模型:一系列键值对 劣势:存储的数据缺少结构化

  • 列存储数据库

典型应用:分布式文件系统 数据模型:以列式存储,将同一列的数据存在一起 对于数据的分析有相当大的优势

  • 文档型数据库

典型应用:Web应用 (类似于Json格式)

  • 图形(Graph)数据库

典型应用:社交网络

Redis基本概念:

使用C语言开发的一个高性能键值数据库。通过一些键值类型来存储数据。键值类型:String、Hash、List、Set、Zset(有序Set)。

(Q:List和Set的区别是啥? A:List是数组 可重复并且有存入顺序。Set:Set类似一种集合的概念 不可重复并且没有顺序。)

特点:
  • 开源的Key-Value存储系统
  • 与Membercache相比,支持存储的value类型更多
  • 数据都支持push/pop,add/remove 以及其他取交并集和差集等更丰富的操作,这些操作都是原子性的。
  • 支持不同方式的排序
  • 数据都是存储在内存中,不消耗I/O操作
  • 可以支持持久化(RDB和AOF) 支持周期性的把数据写入磁盘或者把修改操作写入追加的记录文件
  • 支持集群搭建:主从同步、哨兵模式等
  • 单线程+多路IO复用

Redis键(key)命令

keys* 查看当前库的所有key 

exists key 查看key是否存在

type key  查看key的类型

del key   删除key

unlink key 根据value选择非阻塞删除
(仅将keys从keyspace元数据中删除,真正的删除会在后续异步操作)

expire key second  给给定的key设置过期时间

ttl key 查看key还有多少秒过期(-2表示已经过期 -1表示永不过期)

select index 切换你的redis库(redis有0-15的库)

dbsize 查看当前redis的key的数量

flushdb 清空当前数据库

flushall 通杀全部数据库 😁 删库跑路

Redis字符串(String)

简介:

String是redis最基本的数据类型,一个key对应一个value

String类型是二进制安全的。意味着Redis的string可以包含任何数据,比如jpg图片或者序列化的对象。

一个Redis中字符串value最多可以是512M

常用命令:

set <key><value> 添加键值对

参数:
*NX:当前数据库中key不存在时,可以将key-value添加数据库
*XX:当前数据库中key存在时,可以将key-value添加数据库,与NX参数互斥
*EX:key的超时秒数
*PX:key的超时毫秒数,与EX互斥


get<key> 查询对应键值

append<key><value> 将给定的<value>追加到原值的末尾

setnx <key><value> 只有key不存在时,添加键值对

strlen<key> 获取值的长度

incr<key> 将key中存储的数字值增1 
		  只能对数字值操作,如果为空,新增值为1
		  
decr<key> 将key中存储的数字值减1
		   同👆
		   
incrby/decrby <key><步长> 将key中存储的数字值增减。自定义步长

原子性:所谓原子操作是指不会被线程调度机制打断的操作。
这种操作一旦开始,就一直运行到结束,中间不会有任何context switch(切换到另一个线程)

(1)在单线程中,能够在单条指令完成的操作都可以称为原子操作 因为中间不会发生线程切换
(2)在多线程中,不能被其他进程(线程)打断的操作就叫做原子操作

Redis单命令的原子性主要得益于Redis的单线程
mset<key1><value1><key2><value2> 同时设置一个或多个key-value键值对

mget<key1><key2><key3>... 同时获取一个或多个value

msetnx<key1><value1><key2><value2>...
同时设置一个或多个key-value,当且仅当所有给定key不存在时

原子性,要么都成功,要么都失败!

getrange<key><起始位置><结束位置> 获取值的范围

setrange <key><起始位置><value> 
用<value>覆盖<key>所存储的字符串值,从起始位置开始(索引从0开始)

setex<key><过期时间><value> 设置键值的同时,设置过期时间,单位秒

getset<key><value> 以旧换新,设置了新值同时获得旧值


数据结构:

String的数据结构就是简单动态字符串(Simple Dynamic String SDS)。是可以修改的字符串,内部结构实现上类似于Java的ArrayList,采用预分配冗余空间的方式来减少内存的频繁分配。

Redis列表(List)

简介

单键多值。

Redis列表是简

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值