Redis基础知识以及数据类型
基础知识
redis默认有16个数据库,默认使用的时第0个,可以使用select进行切换数据库
- 清除当前数据库
- 清除全部数据库的内容
Redis是单线程的!
Redis是基于内存操作,CPU不是Redis性能瓶颈,Redis的瓶颈是根据机器的内存和网络带宽,既然可以使用单线程来实现,就使用单线程了!所以就使用了单线程。
Redis为什么单线程还很快?
核心:Redis是将所有数据全部放在内存中的,所以说使用单线程去操作效率就是最高的(多线程上下文切换:耗时的操作),对于内存系统来说,如果没有上下文切换效率就是最高的!多次读写都是在一个CPU上的,在内存情况下,这个就是最佳的方案!
Redis-key
基本数据类型
String数据类型、List 数据类型(队列)、Hash数据类型(散列类型)、set数据类型(无序集合)、Sorted Set数据类型 (zset、有序集合)
String(字符串)
- 对象设置
String类型的使用场景:value除了事我们的字符串还可以使我们的数字! - 计数器
- 统计多单位的数量
- 粉丝数
- 对象缓存存储
list(列表)
列表
在redis里面,我们可以把list玩成,栈、队列、阻塞队列!
所有的list命令都是用l开头的
小结
- 它实际上是一个链表,before after left right都可以插入值
- 如果key不存在,创建新的链表
- 如果key存在,新增内容
- 如果移除了所有值,空链表,也代表不存在
- 在两边插入或者改动值,效率最高!中间元素,相对来说效率会低一点
set(集合)
set中的值不能重复
- 微博,A用户将所有关注的人放在一个set集合中!将它的粉丝也放在一个集合中!共同关注等等
Hash(散列)
可以看做一个Map集合、key-Map集合!的时候这个值是一个map集合!本质和string类型没有太大区别,还是一个简单的key-value
Zset(有序集合)
在set的基础上,增加了一个值
192.168.184.135:6379> ZREVRANGE salary 0 -1 #从大到小进行排列
1) "zhangsan"
2) "xiaohong"
192.168.184.135:6379> ZREVRANGE salary 0 -1 withscores
1) "zhangsan"
2) "5000"
3) "xiaohong"
4) "2500"
192.168.184.135:6379>
192.168.184.135:6379> ZCARD salary #统计zset个数
(integer) 2
192.168.184.135:6379>
案例思路:set排序 存储班级成绩表 工资表排序 排行榜应用场景
三种特殊的数据类型
geospatial(地理位置)
朋友的定位、附件的人,打车距离计算
Redis的Geo在redis3.2版本就推出了!这个功能可以推算地理位置的信息,两地之间的距离,方圆几里的人!
- geoadd