初入Redis
Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API
基本数据类型
- String
- Hash
- List
- Set
- Zset
基本命令
select 1 #选择数据库 16个数据库
DBSIZE #查看数据库大小
keys * #查看所有的键
flushdb #清除当前数据库
flushall #清除全部数据库
Key的基本命令:
set key val
get key
del key
rename key newkey
expire key 10 #10秒过期
exists key #是否存在key
type key #查看类型
ttl key #查看过期时间
String
append key xxx #追加内容
strlen key #查看字符串长度
incr key #自增1
incrby key n #自增n
decr key #自减n
decrby key n #自减n
getrange key start end #获取指定的字符串
setrange key offset xx #替换
setex key 10 val #设置过期时间
setnx key val #如果不存在就设置
mset mget #批处理 原子性
getset key val #先获取再设置
Hash
hset user name zhangsan #设置
hget user name #获取
hmset user name zhangsan age 15 #批处理
hmget user name age #批处理
hgetall user #获取全部字段
hdel user name #删除某个字段
hexists user age #查看某个字段是否存在
hkeys user #获取全部字段key
hvals user #获取全部字段value
hlen user #获取字段个数
List
lpush #将一个或多个值插入到列表头部
lpop user #弹出并移出
rpush #在列表中添加一个或多个值
rpop #移除列表的最后一个元素,返回值为移除的元素。
lrange 0 -1 #获取全部元素
lrem user 1 zhangsan #删除
lset user 0 "bar"
Set
sadd #向集合添加一个或多个成员
scard key #获取集合的成员数
sismember ket member #判断 member 元素是否是集合 key 的成员
smembers key #返回集合中的所有成员
srem #移除集合中一个或多个成员
spop #移除并返回集合中的一个随机元素
srandmember key [count] #返回集合中一个或多个随机数
Redis 事务
Redis 事务可以一次执行多个命令, 并且带有以下三个重要的保证:
- 批量操作在发送 EXEC 命令前被放入队列缓存。
- 收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余的命令依然被执行。
- 在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中。
一个事务从开始到执行会经历以下三个阶段:
- 开始事务。
- 命令入队。
- 执行事务。
它先以 MULTI 开始一个事务, 然后将多个命令入队到事务中, 最后由 EXEC 命令触发事务, 一并执行事务中的所有命令
单个 Redis 命令的执行是原子性的,但 Redis 没有在事务上增加任何维持原子性的机制,所以 Redis 事务的执行并不是原子性的。
事务可以理解为一个打包的批量执行脚本,但批量指令并非原子化的操作,中间某条指令的失败不会导致前面已做指令的回滚,也不会造成后续的指令不做。
持久化策略
- RDB(默认)
- AOF