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 

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