非关系型数据库Redis也叫缓存数据库也是内存数据库
五种数据结构
字符串 string
列表 list
集合 set
有排序的集合 zset
散列 hash
Redis的应用场景
●缓存
使用Redis可以建立性能非常出色的缓存服务器,查询请求先在Redis中查找所需要的数据,如果能够查询到(命中)则直接返回,大大减轻关系型数据库的压力。
●数据临时存储位置
使用token (令牌)作为用户登录系统时的身份标识,这个token就可以在Redis中临时存储。
Redis常作为缓存,作为临时数据,制造测试数据
Redis有什么好处
●查询快
●还可以设置数据的过期时间
●现在很多公司都用redis因为redis能抗住高并发
高并发=大量的用户同时访问场景:火车票刚开的时候抢票,618. 双11.双12, 世界总决赛直播平台
token存放在cookie里面,浏览器存放内容有两个一个叫做header一个叫做cookie
Redis命令
切换数据库
Redis默认有16个数据库,使用select进行切换,数据库索引从0开始
select 0
KEY操作
查看所有的key
keys *
string
SET KEY VALUE [EX SECONDS] [PX MILLISECONDS] [NX|XX]
给KEY设置一个string类型的值。
EX参数用于设置存活的秒数。
PX参数用于设置存活的毫秒数。
NX参数表示当前命令中指定的KEY不存在才行。
Xx参数表示当前命令中指定的KEY存在才行。
GET KEY
根据key得到值,只能用于string类型。
APPEND KEY VALUE
把指定的value追加到KEY对应的原来的值后面,返回值是追加后字符串长度
STRLEN KEY
直接返回字符串长度
INCR KEY
自增1 (要求:参与运算的数据必须是整数且不能超过整数Integer范围)
DECR KEY
自减1 (要求:参与运算的数据必须是整数且不能超过整数Integer范围)
list
LPUSH key value [value ...]
针对key指定的list,从左边放入元素
RPUSH key value [value ...]
针对key指定的list,从右边放入元素
LRANGE key start stop
根据list集合的索引打印元素数据
正着数: 0,1.2,3....
倒着数: -1,-2.-3....
LLEN key
返回list集合的长度
LPOP key
从左边弹出一个元素。弹出=返回+删除。
set
SADD key member [member ..]
给key指定的set集合中存入数据,set会自动去重
SMEMBERS key
返回可以指定的set集合中所有的元素
SCARD key
返回集合中元素的数量
SISMEMBER key meaber
检查当前指定member是否是集合中的元素
返回1:表示是集合中的元素
返回0:表示不是集合中的元素
SREM key member [member ...]
从集合中删除元素
SINTER key [key ...]
将指定的集合进行“交集"操作
集合A: a,b,c
集合8: b.c,d
交集: b,c
SINTERSTORE destination key [key ..]
取交集后存入destination
hash
HSET key field value
插入新数据返回1修改旧数据返回0
同样的key ,同样的field,新的value,添加这个对应的第二个内容
HGETALL key
HGET key field
获取这个value
HLEN key
HKEYS key
HVALS key
HEXISTS key field
HDEL key field [field ...]
HINCRBY key field increment
HMNGET key field [field ...]
HMSET key field value [field value ...]
HSETNX key field value
要求field是新建的
zset
ZADD key [NX|0x] [C] [INCR] score member [score member ..]
ZRANGE key start stop [WITHSCORES]
ZCARD key
ZSCORE key member
ZINCRBY key increment member
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
在分数的指定区间内返回数据
min参数可以通过
-inf表示负无穷
max参数可以通过
+inf表示正无穷
默认是闭区间
可以通过(min (max形式指定开区间,例如: (50 (80
ZRANK key rember
先对分数进行升序排序,返回nember的排名。 排名从0开始
zset和set都不允许value重复
面试问题
看你简历写了redis
redis是非关系数据库, 数据是key跟value主要使用的数据类型是string, 它询速度特别快,(为什么快,redis是key和value, 他可以直接根据key找到这个value就像在mysq通过主键查询一样快)redis是基于内存操作的,比硬盘快
直接说我大概知道redis跟mysql的一点区别
redis是非关系型数据库,数据是存在内存的,mysq是存在硬盘的,
mysq|支持索引和外键,但是redis不支持
mysql有很好的权限控制,redis就是ip和密码
redis有五个数据类型,string list set zset hash
string是字符串
list是一个有序列表,可以左插入和右插入
set是个集合,不可以放重复数据
zset是一个有分数的集合
hash是key和value中value又嵌套了一个key value
因为string在项目中用的比较多,我还熟悉了一下string命令的命令,比如放进去用set key value取出来呢get这个key
项目中:
登录的时候会有一个令牌验证, 这个token就是存在redis里面的, 以后做其他操作的时候,直接在redis拿这个token就好了。
后端令牌验证,登录之后,会给一个token: 414125etdggdscx23432532wtFJF5@# ¥@fafsasf以后做任何操作都带着这个token去操作就不需要继续登录
redis的其他问题,数据持久化,它持久化不如mysql, 如果面试问你持久化,你说我知道这个地方它不如mysql数据库,但是其他具体的我不了解,这个工作中是开发用的,我没有用过。