9.Redis数据库部署和操作
Redis
介绍
NoSQL类型数据库之一,内存运行,效率极高,支持分布式,理论上可以无限拓展数据库,支持各种语言的API,可安装在各种平台
关系型数据库:MySQL、SQLServer、Oracle
非关系型数据库:NoSQL、Redis(key-value)
-
特点:
c/s通信模式(Client and Server)
单进程单线程(list、set、hash……)
支持很多数据类型
高并发读写
支持lua脚本
支持数据持久化(内存数据保存在硬盘)
支持数据备份
读写极快(每秒11w次读,8w1k次写)
原子性操作,要么成功要么失败,即要么全做要么全不做,不会像MySQL做到一半报个错
部署与操作
部署
- 在phpstudy的软件管理中下载Redis服务端和客户端,在客户端中添加服务端Host,即127.0.0.1,默认6379端口
- 在phpstudy的Extensions中打开Redis服务端,可以看到其中的命令文件,在其中使用cmd进行操作
# 连接数据库
本机:redis-cli -h 127.0.0.1
远程:redis-cli -h [远程数据库的地址] -p 6379
# 选择哪个数据库
select [数字]
# 退出
quit
如果要让别人远程连接,除了防火墙端口放行,还要绑定IP
数据库操作
key-value:键值对,键不能重复
# 清空所有数据(基本设置值)
flushall
# 添加键值对
set name1 yingge1
# 获得数据
get name1
# 设置5s后失效的键值对
set name2 yingge2 EX 5
setex name2 5 yingge2
# 获得生命周期
ttl name2
# 同时设置多个键值对
mset key1 value11 key2 value22
# 同时获得多个键值对
mget key1 key2
# 在name1(键)的值后面增加zj11(拼接效果)
append name1 zj11
键命令
keys [正则表达式]
# 取出所有的键
keys *
# 取出所有以ke开头的键
keys ke*
# 取出name0-3的键
keys name[0-3]
# 判断name2键是否存在,1为存在,2为不存在
exists name2
# 删除某一个键,1为成功,2为失败
del name3
# 设置键几秒过期(修改键的生命周期)
expire name2 5
hash类型
# 设置hash类型
hset xiaoming height 180
hset xiaoming weight 60kg
hset xiaoming age 18
# 获得hash值
hget xiaoming height
hget xiaoming weight
hget xiaoming age
# 获得hash下所有的键值对,一行行输出
hgetall xiaoming
# 同时设置多个值的hash(有就修改无就添加)
hmset xiaohong id 3 weight 220kg height 190
# 获得hash下所有的key
hkeys xiaohong
# 查看里面有多少值
hlen xiaohong
# 查看hash下所有的value
hvals xiaohong
# 提取hash特定的key的值
hmget xiaohong id weight
# 删除hash下特定的键值对
hdel xiaohong id height
# 彻底删除某个hash值
del xiaohong
list类型
push是从下往上累加(类似栈堆叠),其他运算从上往下进行操作和计数
# 从左往右依次插入数据,最下面数据为a0,第0个数据为a9
lpush list1 a1 a2 a3 a4 a5 a6 a7 a8 a9
# 从右往左依次插入数据,最下面数据为a9,第0个数据为a1
rpush list2 a1 a2 a3 a4 a5 a6 a7 a8 a9
# 从上往下取4个
lrange list1 0 3
# 从上往下取出所有内容
lrange list1 0 -1
# 取出从上往下的第3个并且值修改为b3
lset list1 2 b3
# 删除所有的a3
lrem [列表] [计数] [值]
如果计数>0,从头到尾搜索值并且删除对应的个数
如果计数<0,从尾到头搜索值并且删除对应的个数
如果计数=0,就删除所有的对应的值
lrem list2 0 a3
# 查看列表中第几个元素
lindex list3 [数字]
# 查看列表中有多少个值
llen list3
0为计数第一个数据,是最上面的数据,也是头
set类型
无序集合,元素唯一,不重复,没有修改操作
# 新建一个set值
sadd s1 member1 member2 member3
# 获取s1里所有值
smembers s1
# 获取s1里有多少个元素
scard s1
# 删除set中的值
srem s1 member2
# 取出交集
sinter s1 s2
# 取并集
sunion s1 s2
# 取差集
sdiff s1 s2
zset类型
- 有序集合,元素唯一,不重复,没有修改操作
- 每个元素关联一个score,也就是权重,从小到大权重从上到下排序
# 添加元素和对应的权重
zadd zs1 4 xiaoming 5 xiaohong 2 xiaogang
# 查看元素排序
zrange zs1 0 -1
# 取权重4-5之间的值(闭区间)
zrangebyscore zs1 4 5
# 删除zset中的值
zrem zs1 xiaogang
删除选定元素而不是权重,权重可以一样但是元素不会一样;权重一样则按照插入顺序从上到下排序