1. 前言
1.1 NoSQL:一类新出现的数据库(not only sql)
- 泛指非关系型的数据库
- 不支持SQL语法
- 存储结构跟传统关系型数据库中的那种关系表完全不同,nosql中存储的数据都是KV形式
- NoSQL的世界中没有一种通用的语言,每种nosql数据库都有自己的api和语法,以及擅长的业务场景
- NoSQL中的产品种类很多:
- Redis
- Mongodb
- Hbase hadoop
- Cassandra hadoop
1.2 Redis简介
Redis是 NoSQL技术的一员,它通过多种键值数据类型来适应不同场景下的存储需求,借助一些高层级的接口使用其可以胜任,如缓存、队列系统的不同角色
1.3 Redis特性
Redis 与其他 key - value 缓存产品有以下三个特点:
- Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
- Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
- Redis支持数据的备份,即master-slave模式的数据备份。
1.4 Redis 优势
- Redis能读的速度是110000次/s,写的速度是81000次/s 。
- Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
- Redis的所有操作都是原子性的。
- Redis还支持 publish/subscribe, 通知, key 过期等等特性。
1.5 详细内容
2. 配置
如果你的学习环境是Linux的话
- Redis的配置信息在
/etc/redis/redis.conf
下
2.1 核心配置选项
- 绑定ip:如果需要远程访问,可将此⾏注释,或绑定⼀个真实ip
bind 127.0.0.1
- 端⼝,默认为6379
port 6379
- 是否以守护进程运⾏
- 如果以守护进程运⾏,则不会在命令⾏阻塞,类似于服务
- 如果以⾮守护进程运⾏,则当前终端被阻塞
- 设置为yes表示守护进程,设置为no表示⾮守护进程
- 推荐设置为yes
daemonize yes
- 数据⽂件
dbfilename dump.rdb
- 数据⽂件存储路径
dir /var/lib/redis
- ⽇志⽂件
logfile “/var/log/redis/redis-server.log”
- 数据库,默认有16个
database 16
- 主从复制,类似于双机备份。
slaveof
3. 操作命令
3.1 客户端命令
- 连接redis
redis-cli
- 运⾏测试命令
ping
- 切换数据库
- 数据库没有名称,默认有16个,通过0-15来标识,连接redis默认选择第一个数据库
select 10
3.2 数据操作命令
- redis是key-value的数据结构,每条数据都是⼀个键值对
- 键的类型是字符串
- 注意:键不能重复
- 值的类型分为五种:
- 字符串string
- 哈希hash
- 列表list
- 集合set
- 有序集合zset
3.2.1 String类型
字符串类型是 Redis 中最为基础的数据存储类型,它在 Redis 中是二进制安全的,这便意味着该类型可以接受任何格式的数据,如JPEG图像数据或Json对象描述信息等。在Redis中字符串类型的Value最多可以容纳的数据长度是512M。
保存
如果设置的键不存在则为添加,如果设置的键已经存在则修改
- 设置键值
set key value
- 例1:设置键为name值为Lindbergh的数据
set name Lindbergh
- 设置键值及过期时间,以秒为单位
setex key seconds value
- 例2:设置键为aa值为aa过期时间为3秒的数据
setex haha 3 haha
- 设置多个键值
mset key1 value1 key2 value2 …
- 例3:设置键为a1值为go、键为a2值为python、键为a3值为java
mset a1 go a2 python a3 java
- 追加值
append key value
- 例4:向键为a1中追加值haha
append a1 haha
获取
- 获取:根据键获取值,如果不存在此键则返回nil
get key
- 例5:获取键name的值
get name
- 根据多个键获取多个值
mget key1 key2 …
- 例6:获取键a1、a2、a3的值
mget a1 a2 a3
3.2.2 键命令
- 查找键,参数⽀持正则表达式
keys pattern
- 例1:查看所有键
keys *
- 例2:查看名称中包含a的键
keys a*
- 判断键是否存在,如果存在返回1,不存在返回0
exists key
- 例3:判断键a1是否存在
exists a1
- 查看键对应的value的类型
type key
- 例4:查看键a1的值类型,为redis⽀持的五种类型中的⼀种
type a1
- 删除键及对应的值
del key1 key2 …
- 例5:删除键a2、a3
del a2 a3
- 设置过期时间,以秒为单位
- 如果没有指定过期时间则⼀直存在,直到使⽤DEL移除
expire key seconds
- 例6:设置键a1的过期时间为3秒
expire a1 3
- 查看有效时间,以秒为单位
ttl key
- 例7:查看键bb的有效时间
ttl bb