1.使用场景
- 业务数据常用
- 读操作远大于写操作
- 数据总量不太大
2.缓存
将数据直接存放在内存,极大减少数据库压力。
3.常用操作
http://doc.redisfans.com/
4.基本的数据结构
① 字符串
可以理解为简单的k/v存储。
常用的命令有:Append
incr
incrby
decr
decrby
get
set
② 哈希表
是一个string类型的field和value的映射表,一个key可以有多个field,一个field对一个value,可以存储复杂对象的信息。
常用的命令有:hset
hget
hexists
③ 集合
集合类型提供一个列表的功能,可以自动去重。
常用的命令有:SADD
SREM
SCARD
SISMEMBER
④ 有序集合
和set的功能相似,可以通过用户提供一个优先级参数来实现自动排序,set结构不会自动进行排序操作。sort set内部使用hashmap和skiplist来实现数据的有序存储,保证查询的效率和元素的有序性。
常用的命令有:append
incr
incrby
decr
decrby
get
set
⑤ 列表
列表是一个双向的链表,支持反向插入/查找/遍历。常用与缓冲队列,消息队列等场景。
常用的命令:lpush
rpush
lpop
rpop
llen
5.常用命令用法
del key
删除键
keys aa*
列举所有的aa开头的key(服务器线上环境慎用,会导致服务器性能问题,严重时影响线上作业)
set/get key
设置/获取key 的值
>
incr [key]
若key
存在且为数字类型则+1并返回加一后的值。
若key
不存在,则创建并初始化为0,然后再执行incr命令。
若key
存在但是不是数字类型,则返回err。
>
decr [key]
若key
存在且为数字类型,则数值减1,返回-1后的值。
若key
不存在,则创建并初始化value
为0,并返回减1后的值。
若key
存在,不是数值类型,则返回error
。
注意:incr
和 decr
均为在int64的范围中进行操作。
>
incrby [key] [Increment]
用法和incr类似,可以指定增加的数值。
若key
不存在,则键key被初始化为0
,然后再执行incrby
命令。
若key
存在,不是数值类型,则返回error
。
>
decrby [key] [Increment]
用法和decr类似,可以指定减去的数值。
若key
不存在,则键key被初始化为0
,然后再执行decrby
命令。
若key
存在,不是数值类型,则返回error
。
注意:incrby
和 decrby
均为在int64的范围中进行操作。
>
sismember [key] [member]
判断member是否属于某个集合key
。
若属于返回1
,不属于或者集合key不存在则返回0
.
>
append [key] [appendStr]
string类型的append
方法用于在指定key
的value
字符串的最后追加字符串,返回追加后的字符串的长度
若key
不存在,则将该key的值设置为appendStr
如何遍历redis:
使用Scan命令可以遍历redis:
scan ITERATOR [MATCH] [Pattern] [COUNT ] [num]
iter为游标,初始为0 ,match后面是key的匹配模式,如:m_* ,count 为每次扫描的记录数,如果库内数据充足,且无match,则返回的结果通常就是count个。
127.0.0.1:6379> scan 0
1) "10"
2) 1) "lottery_push"
2) "zx"
3) "m_m_info_12323"
4) "user_books_5"
5) "l"
6) "user_books_9"
7) "m_m_info_1234"
8) "user_books_6"
9) "m_m_info_1235"
10) "user_books_2"
返回的结果包含两个部分:(1)为下次扫描的游标,(2)为扫描得到的key