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

删除选定元素而不是权重,权重可以一样但是元素不会一样;权重一样则按照插入顺序从上到下排序