文章目录
Redis 入门
Redis 介绍
- Redis 是Key-Value 型NoSQL数据库
- Redis 将数据存储在内存中, 同时也能持久化到磁盘
- Redis 常用于缓存, 利用内存的高效提高程序的处理速度
Redis 特点
- 速度快
- 广泛的语言支持
- 持久化
- 多种数据结构
- 主从复制
- 分布式与高可用 :
Redis 的常用基本配置
配置项 | 示例 | 说明 |
---|---|---|
deamonize | deamonize yes | 是否启用后台运行, 默认no |
port | port 6379 | 设置端口号, 默认6379 |
logfile | logfile 日志文件 | 设置日志文件 |
databases | databases 255 | 设置redis数据库总量 |
dir | dir 数据文件目录 | 设置数据文件存储目录 |
requirepass | requirepass 12345 | 设置使用密码 |
Redis 通用命令
命令 | 示例 | 说明 |
---|---|---|
select | select 0 | 选择0号数据库 |
set | set name jack | 设置key=name value=jack |
get | get hello | 获得key=hello的结果 |
keys | keys he* | 根据pattern表达式查询符合条件的key |
dbsize | dbsize | 返回key 的总数 |
exists | exists a | 查看key=a是否存在 |
del | del a | 删除key=a的数据 |
expire | expire hello 20 | 设置key=hello 20s后过期 |
ttl | ttl hello | 查看key=hello的过期剩余时间 |
Redis 数据类型
- String - 字符串类型
- Hash - Hash类型
- List - 列表类型
- Set - 集合类型
- Zset - 有序集合类型
String 字符串类型
String最大512MB, 建议单个k, v不超过100kb
字符串命令:
命令 | 示例 | 说明 |
---|---|---|
get | get hello | 获得key=hello的结果 |
set | set hello world | 设置key=hello, value=world |
mset mget |
mset hello world java best mget hello java |
一次性设置或者获取多个值 |
del | del hello | 删除key=hello |
incr/decr | incr count decr count |
key对应的value自增/自减1 |
incrby/decrby | incrby count 99 decrby count 99 |
自增自减指定步长 |
Hash 键值类型
- Hash类型用于存储结构化数据
Hash 类型常用命令
命令 | 示例 | 说明 |
---|---|---|
hget | hget emp:1 age | 获取hash中key=age的值 |
hset | hset emp:1 age 23 | 设置hash中age=23 |
hmset hmget hgetall |
hmset emp:1 age 30 name kaka hmget emp:1 age name hgetall emp:1 |
设置hash多个值 获取hash多个值 获取hash所有值 |
hdel | hdel emp:1 age hdel emp:1 |
删除emp:1的age 删除key=emp:1 |
hexists | hexists emp:1 name | 检查是否存在 |
hlen | hlen emp:1 | 获取emp:1中有几个属性 |
List列表类型
- List列表就是一系列字符串的"数组", 按插入顺序排序(数组中的元素必须是字符串类型)
- List列表最大长度为2的32次方-1, 可以包含40亿个元素
List 命令
rpush listkey c b a
- 右侧(数组尾部)插入 r - right, c b a 这些元素都是字符串, listkey 是key的名字, 返回的是当前列表的元素总数lpush listkey f e d
- 左侧(数组头部)插入 l - leftrpop listkey
- 右侧(数组尾部)弹出lpop listkey
- 左侧(数组头部)弹出lrange listkey 0 10
- 将listkey列表中从第一个元素到第11个元素显示, 其中在end的位置
命令 | 示例 | 说明 |
---|---|---|
lrange | lrange [listname] [start] [end] | 将[listname]列表中从第start+1个元素到第end+1个元素显示, 其中在end的位置如果写-1, 代表末尾 |
Set 与 Zset 集合类型
- Set集合是字符串的无序集合, 集合成员是唯一的
- Zset集合是字符串的有序集合, 集合成员是唯一的
Set 命令
命令 | 示例 | 说明 |
---|---|---|
sadd | sadd setname member sadd set1 a |
创建一个集合, 集合名为set1, 成员为"a", 成员必须是字符串 |
smembers | smembers keyname smembers set1 |
查看集合的所有成员 |
sinter | sinter set1 set2 | 交集, 把set1集合和set2集合中同时出现的成员列出来 |
sunion | sunion set1 set2 | 并集, 合并两个集合 |
sdiff | sdiff set1 set2 | 差集, 在set1中有, 在set2中没有的成员 |
Zset 命令
命令 | 示例 | 说明 |
---|---|---|
zadd | sadd zsetname member sadd zset1 100 a sadd zset1 101 b |
创建一个集合, 集合名为zset1, 成员为"a", 成员必须是字符串, 默认情况下zset安装分数增序排列 |
zrange | zrange zset1 0 -1 | 输出指定范围的元素 |
zrangebyscore | zrangebyscore zset1 100 103 | 输出分数指定范围的元素 |
Java客户端-Jedis
- Jedis 是Java语言开发的Redis客户端工具包
- Jedis只是对Redis命令的封装, 掌握Redis命令便可轻易上手
- 通过对象json序列化存入Redis, 从Redis中查询后反序列化为Java对象