redis入门基础知识
redis是啥?
-
概述:
- Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库;
- 一款高性能的nosql非关系型数据库(数据之间没有联系);关系型数据库与NoSQL数据库并非对立而是互补的关系,即通常情况下使用关系型数据库,在适合使用NoSQL的时候使用NoSQL数据库,让NoSQL数据库对关系型数据库的不足进行弥补。
- 一般会将数据存储在关系型数据库中,在NoSql数据库中备份存储关系型数据库的数据.
-
与关系型数据库的区别:
-
数据存储在内存中,数据访问速度快,而关系型数据库数据存在硬盘中;
-
数据之间没有关联;而关系型数据库数据之间有联系;
-
-
为什么不使用map集合做缓存?
-
因为map集合运行在JVM上,而虚拟机有内存大小限制,
-
map不适合做分布式集群部署(项目部署在多个计算机上);
-
Redis业务场景
- 缓存(数据查询、短连接、新闻内容、商品内容等等)
- 聊天室的在线好友列表
- 任务队列。(秒杀、抢购、12306等等)
- 应用排行榜
- 网站访问统计
- 数据过期处理(可以精确到毫秒)
- 分布式集群架构中的session分离
Redis的五种数据结构及常用命令
通用命令
--查询所有的键:
keys *
--获取键对应的value的类型:
type key
--删除指定的key和value:
del key
字符类型(String:set/get)
--存储:
set key value
--获取:
get key
--删除:
del key
哈希类型(hash:hset/hget)
--存储:
hset key filed value
例:hset P000000001 PTD 2023-01-01 cvDate 2022-01-01 payintv 12 paenddate 2030-01-01
--获取:
hget key field:获取指定的key,的指定field对于的value
例:hget P000000001 payintv
hgetall key:获取指定key下所有的键值对
例:hgetall P000000001
--删除:hdel key filed
例: hdel P000000001 payintv
列表类型(list:lpush/rpush lpop/rpop)
--可以模拟出,栈,队列,因为可以左右进出
--可以模拟简单的阻塞式消息队列;
--有序可重复
--添加:
lpush key value
例:lpush mlist a:将元素a加入到列表mlist的左边
rpush key value
例:lpush mlist b:将元素b加入到列表mlist的右边
--获取(范围获取):
lrange key start end
例:lrange mlist 0 -1:-1代表获取所有
--删除:
lpop kye:删除列表最左边的元素,并将将元素返回
rpop key:删除列表最右边的元素,并将将元素返回
集合类型(set:sadd/srem/smembers) 里面的元素不能重复
--无序不能重复,
--可以巧妙去两个集合的并集,差集,比如去除垃圾图片;
--场景用于:比如共同的爱好;
--添加:
sadd key value
例:sadd myset a
--获取:
smembers key:获取set集合中的所有元素
--删除:
srem key value:删除set集合中的某个元
有序集合类型(sortedset:zadd/zrem/zrange)
--不能重复且有序
--每个元素都会关联一个double类型的分数,redis正是通过分数来为集合中的成员进行从小到大的排序。
--场景:用于排行榜
--添加:
zadd key socre value
例:zadd msort 60 zhangsna
zadd msort 50 lisi
--获取:
zrange key start end [withscores](能够将分数显示出来)
例:zrange mysort 0 -1
--删除:
zrem key value