关于Redis的基础知识:
1.什么是redis?
Remote Dictionary Server(Redis) 是一个由 Salvatore Sanfilippo 写的 key-value 存储系统,是跨平台的非关系型数据库。
redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库,并提供多种语言的 API。
redis 通常被称为数据结构服务器,因为值(value)可以是字符串(String)、哈希(Hash)、列表(list)、集合(sets)和有序集合(sorted sets)等类型。
2.Redis默认有16个数据库,默认使用第0个。
Linux下使用select 切换数据库。
flushdb 清空当前数据库 flushall清空所有数据库
3.默认端口号 :6379
为什么是6379,有兴趣可以了解下。
https://blog.csdn.net/weixin_42075590/article/details/80748128
4.redis是单线程的
redis是基于内存操作,取决于机器内存和网络带宽。
redis 6.0加入多线程就是为了优化网络I/O
为什么单线程还很快?
redis是将所有的数据全部放在内存中的,所以说使用单线程去操作效率就是最高的,多线程CPU上下文会切换会很耗时,对于内存系统来说,如果没有上下文切换效率就是最高的!多次读写都是在一个CPU上!
5.五大数据类型
(1)String
基本命令:incr(自增) incrby (可以设置步长,指定增量) decr(自减) append(附加) ,getrange(截取字符串)setrange(替换字符串) setex(set with expire设置过期时间)setnx(不存在再设置 常用于分布式锁)mset(同时设置多个值),mget(同时获取多个值)msetnx(原子性操作)getset(组合命令,不存在值则返回nil,存在值,获取原来的值,并设置新的值)…
String使用场景:
- 访问量计数器
- 统计数量
- 对象缓存存储
(2)List
基本命令:Lpush(将一个或多个值插到列表头部(左))Rpush (右)Lrange(通过区间获取具体值) Lpop(移除列表第一个元素)Rpop(移除列表最后一个元素)Lindex(通过下标获取某一个值) Llen(返回列表长度) Lrem(移除指定的值)Ltrim(通过下标截取指定的长度)Lset(存在则更新下标的值 不存在就报错)Linsert(将某个value插入到列表中某个元素前面)
(3)Set
(4)Hash
(5)ZSet
6.三种特殊数据类型
(1)Geospatial 地理位置
(2)Hyperloglog 基数统计
(3)BitMap位图场景
7.memcached和redis有什么区别?
- 数据操作不同
memached仅支持key-value数据存储,redis支持String Hash List Set ZSet五种数据类型
memached不支持持久化,redis提供了持久化和复制等功能 - 性能不同
由于Redis广泛使用的版本只使用单核,而Memcached可以使用多核,所以平均每一个核上Redis在存储小数据时比Memcached性能更高。而在100k以上的数据中,Memcached性能要高于Redis。 - 存储方式不同
memecache 把数据全部存在内存之中,断电后会挂掉,数据不能超过内存大小;
redis有一部分存在硬盘上,这样能保证数据的持久性。