NoSQL类型数据库之一,内存运行,效率极高,支持分布式,理论上可以无限拓展数据库,支持各种语言的API,可安装在各种平台
关系型数据库:MySQL、SQLServer、Oracle
非关系型数据库:NoSQL、Redis(key-value)
特点:
c/s通信模式(Client and Server)
单进程单线程(list、set、hash……)
支持很多数据类型
高并发读写
支持lua脚本
支持数据持久化(内存数据保存在硬盘)
支持数据备份
读写极快(每秒11w次读,8w1k次写)
原子性操作,要么成功要么失败,即要么全做要么全不做,不会像MySQL做到一半报个错
# 连接数据库 本机: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类型 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
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值 sadd s1 member1 member2 member3 # 获取s1里所有值 smembers s1 # 获取s1里有多少个元素 scard s1 # 删除set中的值 srem s1 member2 # 取出交集 sinter s1 s2 # 取并集 sunion s1 s2 # 取差集 sdiff s1 s2
# 添加元素和对应的权重 zadd zs1 4 xiaoming 5 xiaohong 2 xiaogang # 查看元素排序 zrange zs1 0 -1 # 取权重4-5之间的值(闭区间) zrangebyscore zs1 4 5 # 删除zset中的值 zrem zs1 xiaogang
删除选定元素而不是权重,权重可以一样但是元素不会一样;权重一样则按照插入顺序从上到下排序