Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API
- String - Hash - List - Set - Zset
select 1 #选择数据库 16个数据库 DBSIZE #查看数据库大小 keys * #查看所有的键 flushdb #清除当前数据库 flushall #清除全部数据库
set key val get key del key rename key newkey expire key 10 #10秒过期 exists key #是否存在key type key #查看类型 ttl key #查看过期时间
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 #先获取再设置
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 #获取字段个数
lpush #将一个或多个值插入到列表头部 lpop user #弹出并移出 rpush #在列表中添加一个或多个值 rpop #移除列表的最后一个元素,返回值为移除的元素。 lrange 0 -1 #获取全部元素 lrem user 1 zhangsan #删除 lset user 0 "bar"
sadd #向集合添加一个或多个成员 scard key #获取集合的成员数 sismember ket member #判断 member 元素是否是集合 key 的成员 smembers key #返回集合中的所有成员 srem #移除集合中一个或多个成员 spop #移除并返回集合中的一个随机元素 srandmember key [count] #返回集合中一个或多个随机数
Redis 事务可以一次执行多个命令, 并且带有以下三个重要的保证:
一个事务从开始到执行会经历以下三个阶段:
它先以 MULTI 开始一个事务, 然后将多个命令入队到事务中, 最后由 EXEC 命令触发事务, 一并执行事务中的所有命令
单个 Redis 命令的执行是原子性的,但 Redis 没有在事务上增加任何维持原子性的机制,所以 Redis 事务的执行并不是原子性的。
事务可以理解为一个打包的批量执行脚本,但批量指令并非原子化的操作,中间某条指令的失败不会导致前面已做指令的回滚,也不会造成后续的指令不做。