1.定义:
Redis数据库是一种非关系型数据库,高性能的缓存数据库,保存形式为key-value键值对
和关系型数据库的最大区别是:没有固定的表结构
2.特点:
单进程:
Redis的服务器程序采用的是单进程模型来处理客户端的请求。对读写时间的响应是通过对epoll函数的包装来做到的,同时拥有不错的性能
3.连接可视化:
这里选择的是Redis 5.0.14 (a7c01ef4/0) 64 bit版本的数据库,可视化工具选择的是
安装好数据库后,双击文件redis-server.exe
出现如下页面即为正常连接
安装好可视化软件后,双击启动:
可以看到,默认redis自带16个库,默认端口号是6379
4.数据类型:
redis是key-value型键值对的数据结构,key只有一种类型,即为string类型
value一共有5种类型:string(最常用),list,set,hash,zset
4.1string类型
string是redis最基本的类型,可以储存string,Integer,Float型的数据,甚至是二进制数据,一个字符串的最大容量是512M
常用指令:
set添加值:
set name dilireba
//此时没有就设置name为dilireba
set name yangmi
//此时有name就覆盖为yangmi
setex设置时间:
setex pwd 10 mima
//此时设置pwd密码为mima,时间为10s,到期自动删除,key和value一同消失
mset多个添加:
mset name liangliang pwd 123
append添加:
append name wenwen
//在name字段后面添加wenwen
get取值:
get name
//获取name的值
mget获取多个值:
mget name age pwd
//获取多个值
del删除:
del name
//删除name 返回1,不存在返回0
del删除多个:
del name age
keys *:
查看所有的键
exists 判断是否存在键:
exists aaa
//判断是否存在
type查看对应的值的类型:
type name
expire修改键剩余时间:
先设置好的键如name,此时再设置时间
expire name 20
ttl 查看剩余时间:
ttl name
//返回值为-2为键不存在,-1是没有设置时间的,秒为单位
4.2list类型
(1)列表中的值(value)类型为字符串;
(2)字符串List,底层实现上不是数组,而是链表,也就是说在头部和尾部插入一个新元素,其时间复杂度是常数级别的;其弊端是:元素定位比数组慢
(3)有序的可以重复
常用指令:
插入push:lpush和rpush
lpush name dilireba yangmi wuxuanyi
rpush name dilireba yangmi wuxuanyi
//最后顺序不同,一个是朝左插入,另一个是朝右
获取 lrange:
lrange name 0 -1
//从左到右,0到最后,-1是最后 lrange name 0 1 从左到右
修改lset:
lset name 1 liqin
//格式:lset key名字 下标 值,lset name1 0 yangchaoyue 将name1中的第1个,0下标的值改为yangchaoyue
删除:
lrem key count value
//将列表中的前count次出现的值删除
count>0,从前往后删
count<0,从后向前删
count=0,删除所有
4.3set类型:
字符串set,无序不可重复
常用指令:
插入sadd:
sadd name_set v1 v2 v3
//设置值,不可以设置重复的,可以设置多个值
获取所有的值:
smembers name_set
查询是否在集合中:
sismember name_set v1
删除:
srem name_set v1
//格式:srem key名字 值
获取大小:
scard name_set
//获取name_set的元素个数
弹出spop:
spop key名字
//随机弹出
smove移动元素:
smove name_set name_set1 v3
//将name_set中的v3移动到别的名为name_set1的key的value中去,如果没有名为name_set1的key则创建一个
4.4hash类型
用hash的方式存放数据,key-value(key-value)
添加:
hset user id 999
多个添加:
hmset user id 888 name zs age 18
重复会覆盖
查看所有的键值对:
hgetall user
查看某个键中的键:
hget key key hget user name
同时查看某个键中多个值:
hmget key key key hmget user id name
删除某个键:
hdel key key hdel user id
可以删除多个
4.5zset类型
字符串Set,有序且不可重复,根据Score来排序。
添加元素:
zadd key score value zadd myzset 20 z1
添加后按照score排序,score整数,浮点数,+inf是正无穷
查找区间:
zrange key start stop zrange myzset 0 -1
zrange myzset 0 -1 withscores
下面可以查出score value对
查找:
zrangebyscore key start stop withscores
zrangebyscore myzset 0 20 //大于等于0,小于等于20
zrangebyscore myzset 0 (20 //大于等于0,小于20
删除:
zrem key value value zrem myzset z1 z2
获取个数:
zcard key