redis基础

概述

Redis 是速度非常快的非关系型(NoSQL)内存键值数据库,可以存储键和五种不同类型的值之间的映射。

键的类型只能为字符串,值支持五种数据类型:字符串、列表、集合、散列表、有序集合。

Redis 支持很多特性,例如将内存中的数据持久化到硬盘中,使用复制来扩展读性能,使用分片来扩展写性能

redis:Remote Dictionary Server(远程字典服务器)

NoSQL数据库的优势性

  • 易扩展

NoSQL数据库种类繁多,但它们都有一个共通的特点:就是去除关系型数据库的“关系型”特点。数据之间无关系,这样就变得非常容易扩展,而相对应的来看:关系型数据库修改表结构非常困难。这就为项目架构设计提供了更大的扩展空间。

  • 大数据量高性能

NoSQL数据库都具有非常高的读写性能,尤其在大数据量的情况下,表现同样优秀。这得益于NoSQL数据库中数据之间没有“关系”,数据库结构简单。

从缓存角度来看,MySQL的Query Cache是表级别的粗粒度缓存,假设存储了100条数据,其中有一条数据修改了,整个缓存失效,效率很低。而NoSQL数据库的缓存是记录级的细粒度缓存,任何一条记录的修改都不影响其他记录,效率很高。

  • 多样灵活的数据模型

NoSQL数据库无需事先为要存储的数据建立字段,随时可以存储自定义的数据格式。而在关系数据库里,增删字段是一件非常麻烦的事情。如果是非常大数据量的表,增减修改字段简直就是一个噩梦。

redisbin目录常用命令

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 协议 ,转载请注明出处!