1、 redis是什么呢?
redis是非关系型数据库(nosql),基于内存读写的数据库,采用key-value的方式存储数据
nosql: not noly sql ,没有表的SQL
在目前的企业开发中会用关系型数据库(Oracale+MySQL)+非关系型数据库(Redis 、MongoDB、Memcache)共同开发项目
为什么使用NoSQL
现在存在数据格式非常多样,不适合应用表格进行存储。
表格数据称之为 结构化数据
非表格数据称之为 半结构化 (kv json) 非结构化数据 音频 视频
Redis是基于内存读写的数据库,
硬盘读取速度 大约几百M
内存读取速度 大约 上千M
所以Redis相对来说是要比关系型数据库要快很多
Redis的应用场景:查询读取操作非常频繁的业务
例如:缓存
2、Redis的下载安装
Redis可从
官网进行下载,有windows版和linux版,
都是下载直接解压就可使用
解压后的目录如下:
不过需要注意的是:
在windows系统上,我们要修改redis.windows.conf这个文件,将appendonly no改为appendonly yes
因为redis是忘往内存上面存储数据的,改完这个可以使数据直接同步到硬盘上。
而启动的时候也不要双击redis-server.exe进行启动,因为这样启动是不能加载到redis.windows.conf这个配置文件的,
所以启动的时候我们要在redis解压的目录下进入cmd,
输入:redis-server redis.windows.conf 启动redis服务
如图所示:
这样就启动了Redis服务,再双击redis-cli.exe就启动了Redis的客户端
Linux系统下启动Redis服务要进到解压目录的src下,
输入./redis-server …/redis.conf
进行启动,如图所示:
开启AOF持久化机制,(默认是关闭):
将redis.conf文件中 appendonly 改成 yes ,自动创建appendonly.aof,该文件存储的客户端执行过增删改操作的命令
设置远程连接及密码
1.注释掉bind 127.0.0.1;在地址前面加个#; 2.设置密码,在#requirepass foobared去掉#号变requirepass foobared;foobared是密码; 3.protected-mode 设置成no;修改后是protected-mode no;
3、Redis的数据结构、常用命令
redis数据库存储数据使用的key-value
key是string类型 value的数据结构支持5个string、set、sorted_set、list、hash
value最大占用空间 1GB
redis支持的数据结构比较丰富、对不同的数据结构,还拥有不同的操作命令
set、get、del
keys * 打印所有的key
基础命令 (key value)
keys *
命令的作用:显示redis中 所有的key
keys name* name后面可以有0—多个任意字符
keys name? name后面必须只存在一个字符
exists key
判断 key是否存在 若返回 1 则存在 0 不存在
del key
作用:删除 某一个key
help 命令
帮助命令
flushall 清空所有数据库中的内容
退出 exit|quit 退出redis的服务器
Redis中值是字符串类型 (String 数字)
set
用于设置 一个字符串类型的 key value
get
根据key获取值
mset
一次性设置多个 key value
mget
strlen
append
getrange 截取子串
getrange name 0 3
setex 设置一个key的存活有效期 (秒) psetex 作用与 setex 一致 但是毫秒
setnx
如果当前没有这个key的话 那么 setnx等价于 set命令
如果当前存在这个key的话 那么 setnx不起作用
decr 针对数字类型 做 -1操作 另外 desr key 数字 根据数字做减法操作
incr incrby incrbyfloat
应用场景:缓存查询结果(json或者序列化) 用户访问记录 例如:通过记录ip-访问次数来显示ip的访问
统计粉丝数、点击次数、点赞
Redis中值是set类型
c) List类型的数据操作的命令
i. lpush 栈式结构
lpush name suns[2]
lpush name xiaohei[1]
lpush name xiaowb[0]
ii. lpushx 如果操作的key不存在 则不起作用
如果操作的key存在 则等同于lpush
iii. rpush 操作的内容 等效 java List
第一个操作的元素 就放置在第一个位置
依次类推
应用场景:关注列表、消息队列
hash类型的数据操作的命令
zset (sorted_set)类型的数据操作的命令
7. Redis命令的补充部分
a) 只有set命令 可以操作 任意类型的数据
b) 注意Redis中会有数据库概念 默认存在16数据库 0 ---- 15
默认所使用的数据库 0 如果要选择使用别的数据库 select 编号
注意:不同数据库所创建的key 相互隔离 互补干扰的。通过flushall 清空的是所有数据库中的key. 清空当前的数据库 flushdb这个命令
如何该表Redis中对于数据库的支持呢?编辑 redis.conf
** expire相关命令 (促销 秒杀 手机验证码倒计时 排行榜 Cache)**
i. 在Redis创建key value 默认都是持久化的 永久保存。
ii. 可以通过expire 命令 指定 key 存活时间
expire key seconds
查看某一个key的存活时常
persist 作用 可以把 一个应用了expire命令key 再次转换持久化的key
expireat key unix 时间戳 毫秒数iii.