redis基础
概述
Redis 是速度非常快的非关系型(NoSQL)内存键值数据库,可以存储键和五种不同类型的值之间的映射。
键的类型只能为字符串,值支持五种数据类型:字符串、列表、集合、散列表、有序集合。
Redis 支持很多特性,例如将内存中的数据持久化到硬盘中,使用复制来扩展读性能,使用分片来扩展写性能
redis
:Remote Dictionary Server
(远程字典服务器)
NoSQL数据库的优势性
- 易扩展
NoSQL数据库种类繁多,但它们都有一个共通的特点:就是去除关系型数据库的“关系型”特点。数据之间无关系,这样就变得非常容易扩展,而相对应的来看:关系型数据库修改表结构非常困难。这就为项目架构设计提供了更大的扩展空间。
- 大数据量高性能
NoSQL数据库都具有非常高的读写性能,尤其在大数据量的情况下,表现同样优秀。这得益于NoSQL数据库中数据之间没有“关系”,数据库结构简单。
从缓存角度来看,MySQL的Query Cache是表级别的粗粒度缓存,假设存储了100条数据,其中有一条数据修改了,整个缓存失效,效率很低。而NoSQL数据库的缓存是记录级的细粒度缓存,任何一条记录的修改都不影响其他记录,效率很高。
- 多样灵活的数据模型
NoSQL数据库无需事先为要存储的数据建立字段,随时可以存储自定义的数据格式。而在关系数据库里,增删字段是一件非常麻烦的事情。如果是非常大数据量的表,增减修改字段简直就是一个噩梦。
redis
的bin
目录常用命令
Redis-benchmark | 压力测试。标准是每秒80000次写操作,110000次读操作 (服务启动起来后执行,类似安兔兔跑分) |
---|---|
Redis-check-aof | 修复有问题的AOF文件 |
Redis-check-dump | 修复有问题的dump.rdb文件 |
Redis-sentinel | 启动哨兵,集群使用 |
redis-server | 启动服务器 |
redis-cli | 启动客户端 |
客户端登录
命令 | 说明 | 举例 | 备注 |
---|---|---|---|
redis-cli | 启动客户端 | redis-cli –p 端口号 连接指定的端口号 | 直接执行的话,默认端口号就是6379; |
ping | 测试联通 | 回复pong代表联通 | |
exit | 退出客户端 | ||
redis-cli shutdown | 停止服务器 | redis-cli -h 127.0.0.1 -p 6379 shutdown 停止指定ip指定端口号的服务器 | redis是通过客户端发送停止服务器的命令 |
Redis基本操作
数据库连接操作
命令 | 说明 | 举例 | 备注 |
---|---|---|---|
select |
切换数据库 | select 1:切换到1号库 | 开启redis服务后,一共有16(0-15)个库,默认在0号库 |
flushdb | 清空当前库 | ||
dbsize | 查看数据库数据个数 | ||
flushall | 通杀全部库 |
key的操作
Redis中的数据以键值对(key-value)为基本存储方式,其中key都是字符串
表达式 | 描述 |
---|---|
KEYS pattern | 查询符合指定表达式的所有key,支持*,?等 |
TYPE key | 查看key对应值的类型 |
EXISTS key | 指定的key是否存在,0代表不存在,1代表存在 |
DEL key | 删除指定key |
RANDOMKEY | 在现有的KEY中随机返回一个 |
EXPIRE key seconds | 为键值设置过期时间,单位是秒,过期后key会被redis移除 |
TTL key | 查看key还有多少秒过期,-1表示永不过期,-2表示已过期 |
RENAME key newkey | 重命名一个key,NEWKEY不管是否是已经存在的都会执行,如果NEWKEY已经存在则会被覆盖 |
RENAMENX key newkey | 只有在NEWKEY不存在时能够执行成功,否则失败 |
常用五大数据类型
Redis中的数据以键值对(key-value)为基本存储方式,其中key都是字符串,这里探讨数据类型都是探讨value的类型。
key | value |
---|---|
string | 字符串 |
list | 可以重复的集合 |
set | 不可以重复的集合 |
hash | 类似于Map<String,String> |
zset(sorted set) | 带分数的set |
String操作
String类型是Redis中最基本的类型,它是key对应的一个单一值。
二进制安全,不必担心由于编码等问题导致二进制数据变化。所以redis的string可以包含任何数据,比如jpg图片或者序列化的对象
Redis中一个字符串值的最大容量是512M。
SET key value | 添加键值对 |
---|---|
GET key | 查询指定key的值 |
APPEND key value | 将给定的value追加到原值的末尾 |
STRLEN key | 获取值的长度 |
SETNX key value | 只有在 key 不存在时设置 key 的值 |
INCR key | 指定key的值自增1,只对数字有效 |
DECR key | 指定key的值自减1,只对数字有效 |
INCRBY key num | 自增num |
DECRBY key num | 自减num |
MSET key1 value1 key2 value2… | 同时设置多个key-value对 |
MGET key1 key2 | 同时获取一个或多个value |
MSETNX key1 value1 key2 value2 | 当key不存在时,设置多个key-value对 |
GETRANGE key起始索引 结束索引 | 获取指定范围的值,都是闭区间 |
SETRANGE key起始索引 value | 从起始位置开始覆写指定的值 |
GETSET key value | 以新换旧,同时获取旧值 |
SETEX key 过期时间 value | 设置键值的同时,设置过期时间,单位秒 |
list操作
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!