关于Redis数据库知识点的梳理
话说,以前Redis我是会用的,但是不太熟练,久而久之就变得有点生疏了,学习Redis的时候也没有
去系统的去学习,给我的一种感觉就是,嗯。。。 我会用了,当时还是很满足的,因为以后出去面试我可
以说会关系型数据库(常见的MySQL与Oracle)与非关系型数据库(Redis)了,但是过了就那么一小段时
间(可能因为不操作Redis的缘故)我发现我仅仅是知道Redis是个啥!他是干啥的!啥时候用它!操作的
语法可能去了十之七八,这种感觉很不爽,所以暂时就先找找资料先把公司的需求完成,之后自己再通过
观看书籍(真正的从头到尾用脑子过一遍),我相信那个时候我就不会忘记了。下面我们讨论知识点。
什么是Redis
- Redis是基于内存的一种非关系型数据库
Redis能干什么
举个简单的例子,当你用手机访问淘宝或者京东的时候某一些页面布局可能被成千上万的
用户所访问,你不可能每一次都去重新请求一次数据库,那样势必会增加数据库服务器的
压力,而且数据库服务器是基于硬盘的,而Redis是基于内存的,两者之间的速度硬盘的读取方式
硬盘是有机械结构的,磁头要运动到相应的位置,转片还在转动,然后读取磁信号
内存的读取方式
而内存是没有机械结构的,是电,瞬间到达。电的到达速度要比磁头的运动快得多,比盘算转 动也快得多。所以,有机械结构的磁头的读取速度是不能和无机械结构电的速度相比的
这一点也是为什么要用Redis将常访问的数据放置在内存中的原因
什么时候用它
- 当然,我们没有权限去操作淘宝或者其他高并发公司的数据库或者了解相关的业务流程,但是我们可以分析在日常我们平时做项目的时候应该考虑到用Redis,打个比方因为内存是很有限的,所以我们应该采用最近未使用算法:又称为clock算法(不知道的去了解一下,就可以了https://blog.csdn.net/wang664626482/article/details/50839427),采用这种调度机制,将常访问的数据放置到Redis的内存中。
Redis简介
- Redis是非关系型数据库
- Redis是c语言写的
- Redis是基于key-value进行数据存储的
- Redis存储类型包括String,hashmap,list,set,可排序集合
- Redis支持持久化,按一定策略将内存数据异步保存到磁盘
- Redis支持事务控制,消息传递等功能
各种类型数据存储命令
字符串操作(string)
- set key value //存一组key value
- mset key value key value //存多组key value
- get key //获取value
- strlen key //获取value字符长度
- incr key //将value加1
- incrby key number //将value加number
- decr key //将value减1
- decrby key number //将value减number
- append key value1 //将value拼接value1
key操作
- keys * //查看有哪些key
- del key //删除key
- expire key n //设置key有效期为n秒
- rename key newkey //修改key名字
- type key //返回value值得类型
- exists key //判断key是否存在
哈希操作 (hashmap)
- hset key 字段名 字段值 //设置一个字段名和字段值
- hmset key 字段名1 字段值1 字段名2 字段值2 //设置多个
- hget key 字段名 //获取一个字段值
- hmget key 字段名1 字段名2 //获取多个字段值
- hlen key //获取字段数量
- hkeys key //获取字段名
- hdel key 字段名 //删除某个字段
列表操作 (list)
- lpush key value //在列表头部插入一个元素
- rpush key value //在列表尾部插入一个元素
- lrange key 0 -1 //获取列表所有元素
- llen key //获取列表元素数量
- lrem key count value //删除列表指定数量的元素
- lset key index value //更新某个索引位置的元素
- lindex key index //获取指定索引位置的元素
- lpop key //删除列表头部第一个元素
- rpop key //删除列表尾部最后一个元素
- linsert key BEFROE|AFTER value newvalue //在列表value元素前或后插入newvalue值
集合操作 (set)
A = {1,3,5}
B = {3,5,7,9}
A交B = {3,5}
A并B = {1,3,5,7,9}
A差B = {1}
B差A = {7,9}
- sadd key value value //向集合存数据
- smembers key //获取集合所有元素
- scard key //获取集合元素数量
- srem key value //删除value元素
- spop key //随机删除一个元素
- srandmember key n //随机返回n个元素
- sdiff key1 key2 //key1和key2集合的差集
- sinter key1 key2 //key1和key2集合交集
- sunion key1 key2 //key1和key2集合并集
- sdiffstore key key1 key2 //key1和key2集合的差集,结果存放到key集合中
有序集合操作
排序规则:给每个元素配一个double分值,按分值排序,默认由小到大排序。
- zadd key score value score value //添加元素
- zcard key //获取元素数量
- zrange key 0 n //获取指定索引范围的元素,0 -1表示所有元素(由小到大排序)。
- zrevrange key 0 n//根据score由大到小排序,获取指定索引的元素
- zrem key value //删除某个元素
- zscore key value //返回元素的分值
- zrank key value //获取元素索引位置(由小到大排序)
- zrevrank key value //获取元素索引位置(由大到小排序)
- zcount key min max //统计分值在min和max之间的元素数量
下一次,再说JAVA操作Redis的操作
部分引自:https://zhidao.baidu.com/question/1768886456864963220.html