Redis入门
Redis
= Remote Dictionary Server
远程字典服务
基础知识:
Redis
默认有16
个数据库,默认使用的是第0
个;Redis
是单线程的:Redis
是基于内存操作,Redis
的瓶颈是机器的内存和网络带宽,cpu
不是Redis
性能瓶颈;
Redis为什么是单线程还这么快?
- 误区1:高性能的服务器一定是多线程的?
- 误区2:多线程一定比单线程效率高?
(cpu在进行上下文切换的时候很耗时间)
核心:Redis
是将所有的数据全部放在内存中,所以单线程操作效率就是最高的,对于内存系统来说,没有上下文切换效率就是最高的.
String(字符串)
set key value
:添加一个键值对
get key
:获取键对应的值
下面的四个操作都是针对value为Integer的情况
incr key
:加一操作
decr key
:减一操作
incrby key increment
:加increment
decrby key decrement
:减decrement
GETRANGE key start end
: 获取区间字符串
SETRANGE key offset value
:替换字符串,从offset开始
setex key seconds values
:设置过期时间
ttl
:查看过期时间
-1
:永不过期-2
:已经过期,没有这个key的话也会显示-2其他
:剩余时间
setnx key value
:如果不存在再设置value
keys *
:查看所有的key
mset k1 v1 k2 v2 ...
:批量添加
msetnx k1 v1 k2 v2 ...
:当所有key都不存在时批量添加
mget
:批量读取
getset key value
:先读取再添加
List
lpush key value [value ...]
:将value从左到右依次放入list的左边,所以最后放入的在第一个
lrange key start stop
:查看list
rpush key value [value ...]
:将value从左向右依次放入list的右边,所以最先放进去的在第一个
lpop key
:移除最左边的
rpop key
:移除最右边的
lindex key index
:通过下标获取元素,如果index为负,就从右向左数
llen key
:获取长度
lrem key count value
:从list的最左边依次删除count个value,count为负数时取绝对值
ltrim key start stop
:保留list中[start, stop]区间,上图展示了各种情况
rpoplpush source destination
:将source中的最有元素移出放入destination的最左
lset key index value
:将key中index处的元素替换
LINSERT key BEFORE|AFTER pivot value
:在pivot的前面或者后面插入value,privot不存在返回负一
Set(集合,值不能重复,无序)
sadd key member [member ...]
:添加元素,如果添加了重复的会被忽略
SMEMBERS key
:获取所有成员
SISMEMBER key member
:判断member是否在key中
scard key
:获取数量
SREM key member [member ...]
:移除key中的member元素
SRANDMEMBER key [count]
:随机抽取count个元素
SPOP key [count]
:随机移除count个元素
SMOVE source destination member
:将source中的member元素移到destination中
SUNION key [key ...]
:求几个集合的并集
SDIFF key [key ...]
:求几个集合的差集
SINTER key [key ...]
:求几个集合的交集
Hash(哈希)
上图就是hash的结构
HSET key field value
:添加一个键值对到key中,但是我发现也可以添加多个
HMSET key field value [field value ...]
:添加多个键值对到key中,但是我不太清楚除了返回值这两者的区别
HGET key field
:获取key中的field字段的value
HGETALL key
:获取所有的field和value
HDEL key field [field ...]
:删除key中的field
HLEN key
:获取长度
HEXISTS key field
:判断hash中指定字段是否存在
HKEYS key
:获得所有的key
HVALS key
:获取所有的value
HSETNX key field value
:field不存在时才设置value
ZSet(有序集合)
有序集合zset
相对于集合set
多了一个标志,根据标志排序
-inf
:负无穷
+inf
:正无穷
zadd key [NX|XX] [CH] [INCR] score member [score member ...]
:添加数据到集合中
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
:升序显示,显示[min,max]
之间的数据, withscores
为可选参数是否显示标志, limit offset count
显示的数据量
ZREM key member [member ...]
:删除member
ZCARD key
:获取有序集合的长度