本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点,欢迎star~
Github地址:https://github.com/Tyson0314/Java-learning
Redis支持五种数据类型:
- string(字符串)
- hash(哈希)
- list(列表)
- set(集合)
- zset(sorted set)
字符串类型
字符串类型的值可以是字符串、数字或者二进制,但值最大不能超过512MB。
常用命令:set, get, incr, incrby, desr, keys, append, strlen
- 赋值和取值
SET name tyson
GET name
- 递增数字
INCR num //若键值不是整数时,则会提示错误。
INCRBY num 2 //增加指定整数
DESR num //递减数字
INCRBY num 2.7 //增加指定浮点数
- 其他
keys list*
列出匹配的key
APPEND name " dai"
追加值
STRLEN name
获取字符串长度
MSET name tyson gender male
同时设置多个值
MGET name gender
同时获取多个值
GETBIT name 0
获取0索引处二进制位的值
FLUSHDB
删除当前数据库所有的key
FLUSHALL
删除所有数据库中的key
SETNX和SETEX
SETNX key value
:当key不存在时,将key的值设为value。若给定的key已经存在,则SETNX不做任何操作。
SETEX key seconds value
:比SET多了seconds参数,相当于SET KEY value
+ EXPIRE KEY seconds
,而且SETEX是原子性操作。
keys和scan
redis的单线程的。keys指令会导致线程阻塞一段时间,直到执行完毕,服务才能恢复。scan采用渐进式遍历的方式来解决keys命令可能带来的阻塞问题,每次scan命令的时间复杂度是O(1),但是要真正实现keys的功能,需要执行多次scan。
sca