Redis
Redis是一个开源的使用ANSI C语言编写、支持网络、 可基于内存亦可持久化的日志型、Key-Value型 NoSQL数据库,并提供多种语言的API。从2010年3 月15日起,Redis的开发工作由VMware主持。从 2013年5月开始,Redis的开发由Pivotal赞助。
一、配置选项
| 命令 | 示例 | 说明 |
|---|---|---|
| daemonize | deamonize yes | 是否启用后台运行,默认”no” |
| port | port 6379 | 设置端口号,默认6379 |
| lgfile | logfile日志文件 | 设置日志文件 |
| databases | databases 255 | 设置redis数据库总量 |
| dir | dir 数据文件目录 | 设置数据文件存储目录 |
| requirepass | requirepass 12345 | 设置使用密码 |
二、通用命令
| 命令 | 示例 | 说明 |
|---|---|---|
| select | select 0 | 选择0号数据库 |
| keys | keys * | 查询所有 |
| dbsize | dbsize | 返回key的总数 |
| exists | exists a | 检查key=a是否存在 |
| del | del a | 删除key=a的数据 |
| expire | expire hello 20 | 设置key=hello 20秒后过期 |
| ttl | ttl hello | 查看key=a的过期剩余时间 |
三、数据结构
1、String
1.1 字符串类型
| key | value |
|---|---|
| hello | world |
| counter | 3321 |
| bits | 1001010 |
1.2 字符串指令
| 命令 | 示例 | 说明 |
|---|---|---|
| get | get hello | 获得key=hello的value |
| set | set hello world | 设置key=hello,value=hello |
| mset | mset hello world java best | 一次性设置多个kv |
| mget | mget hello java | 一次性获取多个kv |
| del | del hello | 删除key=hello |
| incr/decr | incr/decr count | key值自增/自减1 |
| incrby/decrby | incrby/decrby count 10 | 自增/自减 10 |
2、Hash
2.1 Hash键值结构
- Hash类型用于存储结构化数据.
- Hash可以看做是Map中的Map

2.2 Hash 指令
| 命令 | 示例 | 说明 |
|---|---|---|
| hget | hget user:1:info age | 获取hash中key=age的值 |
| hset | hset user:1:info age 23 | 设置hash中age=23 |
| hmset | hmset user:2:info age 30 name kaka | 设置hash中age=30,name=kaka |
| hmget | hmget user:2:info age name | 获取hash中age & name |
| hgetall | hgetall user:2:info | 获取hash所有值 |
| hdel | hdel user:1:info age | 删除user:1的age |
3、List
- List列表是简单的字符串列表,按照插入顺序排序。你 可以添加一个元素到列表的头部(左边)或者尾部 (右边)
- 一个列表最多可以包含 2的32次方 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。
3.1 list指令
- rpush listkey c b a - 右侧插入
- lpush listkey f e d - 左侧插入
- rpop listkey - 右侧弹出
- lpop listkey - 左侧弹出
- llen listkey - 获取长度
- lrange listkey 0 2
- lrange listkey 1 -1 获取子集
4、Set
- Redis 的 Set 是 String 类型的无序集合。集合成员是 唯一的,这就意味着集合中不能出现重复的数据。
- Redis 中集合是通过哈希表实现的,所以添加,删除, 查找的速度极快。
- 集合中最大的成员数为 2的32次方 - 1 (4294967295, 每个集合可存储40多亿个成员)。
4.1 Set指令
| 命令 | 示例 | 说明 |
|---|---|---|
| sadd | sadd user:1:follow it | 添加user:1:follow属性it |
| srem | screm user:1:follow it | 移除user:1:follow属性it |
| scard | scard user:1:follow | 计算集合数量 |
| srandmember | srandmember user:1:follow 3 | 随机挑选3个元素 |
| spop | spop user:1:follow | 随机弹出元素 |
5、Zset
- Redis 的 Zset 是 String 类型的有序集合。集合成员是 唯一的,这就意味着集合中不能出现重复的数据

5.1 Zset指令
| 命令 | 示例 | 说明 |
|---|---|---|
| zadd | zadd player:rank 1000 ronaldo 900 messi | 添加集合中的元素 |
| zrank | zrank player:rank ronaldo | 获取ronaldo的排名 |
| zrem | zrem player:rank messi | 删除messi的数据 |
| zrange | zrange player:rank 0 -1 | 获得排序索引数据(0 -1是全部数据) |
| zcount | zcount player:rank 700 900 | 获得排序数据(score在700-900之间) |
| zrangebyscore | zrangebyscore player:rank 700 900 | 获得700-900的排序元素 |