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的排序元素 |