四种分类的比较
Redis概念
区别
Redis的基本操作
首先先运行服务器端和客户端
Redis默认有16个数据库,默认使用的是第0个数据库,可以通过select切换数据库。
Redis的命令对大小写不敏感
select
切换数据库,格式: select index
dasize
查看数据的大小, 格式: dbsize
keys
查看所有的key,格式: keys
flushdb flushall
清空当前数据库和清空所有的数据库
Redis是单线程的
从系统上看是多线程,本身是基于内存的,说它是单线程是因为它读写,计算是单线程的
Redis是很快的,官方表示,Redis是基于内存操作的,不需要I/O,CPU不是Redis的性能瓶颈,Redis的瓶颈就是根据机器的内存和网络带宽。既然可以使用单线程来实现,就使用单线程了!
Redis是C语言实现的,官方数据:读:110000/s 写: 80000/s,完全不比同样使用key-value的Memcached差。
Redis为什么单线程还这么快?
误区1: 高性能的服务器一定是多线程的
误区2: 多线程(CPU上下文切换)一定比单线程效率高
核心: Redis是将所有的数据全部放在内存中的,所以说使用单线程去操作效率就是最高的,相比多线程,减少了CPU上下文切换的耗时。对于内存系统来说,没有上下文切换效率就是最高的,多次读写都是在一个CPU上的。
Redis的五个基本类型
string,列表,集合,有序集合,哈希
Redis-key
字符串 string
set get
设置值和获取值: 格式: set key value get key
exists
判断key是否存在,格式: exists key
删除操作
查询k类型
每种类型有自己的获取方式
append
追加字符串,如果key不存在,相当于set命令,格式: append key value
strlen
获取字符串的长度,格式: strlen key
incr decr
对value进行自增1和自减1操作,格式: incr key decr key
模拟博客:浏览量。粉丝数,点赞数,评论量
通过k值设置,多个用户账号
incrby decrby
设置加减的步长,格式: incrby key num decrby key num
getrange
获取给定范围的字符串值,格式: getrange key start stop
setrange
从指定位置开始替换字符串的值,格式: setrange key offset value
setex ttl
设置过期时间,查看剩余时间,格式: setex key seconds value ttl key
没有设置过期时间!
数据量过多,要设置过期时间
数据过期后自动删除!(热点数据)
setnx
如果key不存在则设置,负责失败,格式: setnx key value
mset mget
同时设置或者获取多个值,格式: mset key1 value1 key2 value2 … mget key1 key2…
msetnx
用string存储对象时key值的设计
Json不好之处在于我们单独拿不出姓名或者年龄!!!
getset
先获取值,在设置值,格式: getset key value
数据是会保存的!!!
退出的是客户端。接下来退出服务端
String类似的使用场景:value除了是字符串也可以是数字!
计数器
统计多单位的数量
对象缓存存储