参考:黑马视频
文章目录
Redis的应用
热点数据查询:热点商品、热点新闻、咨询
任务队列:秒杀、抢购
即时信息:排行榜、访问统计
时效性信息:验证码、投票
分布式数据共享
分布式锁
redis启动
redis服务启动:redis-server.exe
默认端口:6379(pid随机生成)
客户端启动:redis-cli.exe
基本操作
set:set key value
get:get key
获取帮助:help 命令
数据类型
Redis中的key都是string,数据类型指的是value
string
基本操作
- set key value
- get key
- 删除数据:del key
- set多个数据:mset key1 value1 key2 value2
- get多个数据:mget key1 key2
- 获取字符长度:strlen key
- 追加value:append key value
- 设置时效性:
setex key 秒 value
psetex 毫秒 value
扩展操作
前提 value是string类型的数值,且未超过范围
-
设置数值增加
incr key
incrby key 数值
incrbyfloat key 小数 -
设置数值减少
decr key
decrby key 数值
应用:数据库分表主键设置
hash
介绍
一个存储空间存多个键值对数据。
结构优化:
如果field数量少,存储结构类似数组。
如果field数量多,存储结构类似Hashmap。
基本操作
- 添加:hset key field value
- 获取:
hget key field
hgetall key - 删除:
hdel key field1 [field2] - 添加/修改多个
hmset key field1 value1 field2 value2 - 获取多个
hmget key field1 field2 …… - 获取哈希表中有多少field
hlen key - 获取哈希表中是否存在field
hexists key field - 添加,如果field有值,不变
hsetnx key field value
注意事项
hash下的value只能是字符串,不可以嵌套。
hash存储的键值对有上限。
不可以滥用,会增大存储空间和查询效率
list
介绍
存储多个数据,会对数据进入存储空间的顺序进行分区。
底层为双向链表
基本操作
-
添加、修改:
lpush key value1 [value2] ……
rpush key value1 [value2] …… -
获取:
lrange key start stop
lindex key index
llen key -
获取并移除:
lpop key
rpop key -
移除指定数据
lrem key 数量 value -
通过阻塞获取数据(在一定时间内,只要list里有数据,就获取,没有,就一直等待)
blpop key1 [key2] time
brpop key1 [key2] time
set
介绍
存储大量数据,优化查询效率
与hash存储结构类型,但是仅存键,值为nil,且键不可能有重复的,多次插入同一个,只有第一次有效
基本操作
-
添加
sadd key member1 [member2] -
获取
smembers key -
删除
srem key member1 [member2] -
获取集合数据总量
scard key -
判断是否包含
sismember key member -
随机获取
srandmember key 数量 -
随机获取并删除
spop key
sorted_set
数据有序
基本操作
-
添加:
zadd key score1 member1 [score2 member2] -
获取:
zrange key start stop [withscores]
zrevrange key start stop [withscores] (倒叙) -
删除:
zrem key member [member] -
按条件获取
zrangebyscore key min max [withscores] [limit]
Jedis 学习记录
Jedis
maven 依赖
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
helloword
@Test
public void helloWord(){
//连接
Jedis jedis = new Jedis("127.0.0.1",6379);
//操作
jedis.set("id","1001");
System.out.println(jedis.get("id"));
//关闭
jedis.close();
}