redis的基本使用方法
每日一句诗词
loading...
loading...
redis简介
什么是Redis
Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库,官方提供测试数据,
50个并发执行100000个请求,读的速度是110000次/s,写的速度是81000次/s ,
且Redis通过提供多种键值数据类型来适应不同场景下的存储需求,目前为止Redis支持的键值数据类型如下1
2
3
4
51) 字符串类型 string
2) 哈希类型 hash
3) 列表类型 list
4) 集合类型 set
5) 有序集合类型 sortedset
redis的应用场景
- 缓存(数据查询、短连接、新闻内容、商品内容等等)
- 聊天室的在线好友列表
- 任务队列。(秒杀、抢购、12306等等)
- 应用排行榜
- 网站访问统计
- 数据过期处理(可以精确到毫秒
- 分布式集群架构中的session分离
基本配置
1
2
3
4port 6379 ;指定的端口号
requirepass foobared ;设置密码
bind 127.0.0.1 ;只允许本机连接
详细见官网 redis.net.cn数据操作
String字符串
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24# 1 SET key value 设置指定 key 的值
127.0.0.1:6379> set name panther
OK
127.0.0.1:6379> set name panther2
OK
127.0.0.1:6379> get name
"panther2" ;覆盖操作
# 2 GET key 获取指定 key 的值。
127.0.0.1:6379> get name
"panther"
127.0.0.1:6379> get names
(nil) ;等同于null
# 3 SETEX key seconds value 设置过期时间的对象 单位为秒
127.0.0.1:6379> setex name 5 panther
OK
127.0.0.1:6379> get name
(nil)
# 4 SETNX key value 只有key不存在时设置key的值
127.0.0.1:6379> setnx name panther
(integer) 1
127.0.0.1:6379> setnx name panther
(integer) 0Hash哈希操作
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33# HSET key field value 设置key字段的field设置值为value
127.0.0.1:6379> hset 101 name panther
(integer) 1
127.0.0.1:6379> hset 101 age 18
(integer) 1
127.0.0.1:6379> hset 101 age 20
(integer) 0 ; 不会覆盖
# HGET key field 获取对应field
127.0.0.1:6379> hget 101 name
"panther"
# HDEL key field 删除对应field
127.0.0.1:6379> hdel 101 age
(integer) 1
127.0.0.1:6379> hget 101 age
(nil)
# HKEYS key 获取hash表中所有字段
127.0.0.1:6379> hkeys 101
1) "name"
2) "age"
# HVALS key 获取hash表中所有的值
127.0.0.1:6379> hvals 101
1) "panther"
2) "20"
# HGETALL key 获取指定key的所有field和value
127.0.0.1:6379> hgetall 101
1) "name"
2) "panther"
3) "age"
4) "20"list列表操作
- 简单的String列表,按照顺序插入
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17# LPUSH key value [value2...] 插入一个或多个数据到头部
127.0.0.1:6379> lpush list a b c d
(integer) 4
# LRANGE key start stop 获取指定范围元素
127.0.0.1:6379> lrange list 1 2
1) "c"
2) "b" ;3-a 2-b 1-c 0-d
# RPOP key 移出列表最后一个元素
127.0.0.1:6379> rpop list
"a"
# LLEN key 获取列表长度
127.0.0.1:6379> llen list
(integer) 3
# BRPOP key timeout 移出列表最后一个元素,若列表为空进入阻塞等待超时或有元素可弹出时停止set集合操作
set是String类型的无序列表,不可重复1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39# SADD key member [member...] 添加一个或多个数据
127.0.0.1:6379> sadd set a b c d
(integer) 4
127.0.0.1:6379> sadd set a
(integer) 0
# SMEMBERS key 返回集合中所有的成员
127.0.0.1:6379> smembers set
1) "b"
2) "a"
3) "d"
4) "c"
# SCARD key 返回集合的成员数
127.0.0.1:6379> scard set
(integer) 4
# SINTER key1 [key2] 返回给定的集合的交集
127.0.0.1:6379> sadd set2 a b e
(integer) 2
127.0.0.1:6379> sinter set set2
1) "b"
2) "a"
# SUNION key [key2] 返回给定的集合的并集
127.0.0.1:6379> sunion set set2
1) "d"
2) "c"
3) "a"
4) "b"
5) "e"
# SDIFF key1 [key2] 返回给定集合的差集
127.0.0.1:6379> sdiff set set2
1) "d"
2) "c"
# SREM key member [member...] 移除集合中一个或多个成员
127.0.0.1:6379> srem set2 a b
(integer) 2有序集合
- sored set 通过分数从小到大排序,元素不可重复分数可以
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34# ZADD key score member [score member...] 添加一个或多个元素
127.0.0.1:6379> zadd mysort 60 panther 80 Gin 30 user
(integer) 3
127.0.0.1:6379> zadd mysort 50 panther
(integer) 0 ;没有覆盖数据但是枫分数改了
# ZRANGE key start stop 输出范围的成员
127.0.0.1:6379> zrange mysort 0 -1
1) "user"
2) "panther"
3) "Gin"
127.0.0.1:6379> ZRANGE mysort 0 -1 WITHSCORES
1) "user"
2) "30"
3) "panther"
4) "50"
5) "Gin"
6) "80"
# ZINCRBY key increment member 向指定成员增加分数
127.0.0.1:6379> zincrby mysort 50 panther
"100"
127.0.0.1:6379> ZRANGE mysort 0 10 WITHSCORES
1) "user"
2) "30"
3) "Gin"
4) "80"
5) "panther"
6) "100"
# ZREM key member [member...] 移除对应成员
127.0.0.1:6379> zrem mysort user
(integer) 1redis通用操作
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21# KEYS pattern 查找符合给定模式的key
127.0.0.1:6379> keys *
1) "user"
2) "test"
3) "set"
# EXISTS key 判断key是否存在
127.0.0.1:6379> exists test
(integer) 1
# TYPE key 判断key的类型
127.0.0.1:6379> type name
string
127.0.0.1:6379> type mysort
zset
# DEL key 删除key
127.0.0.1:6379> del test
(integer) 1
# TTL key 返回key值所剩时间,以秒为单位
127.0.0.1:6379> setex test 100 panther
ok
127.0.0.1:6379> TTL test
(integer) 93使用springdata-redis操作redis
- 导入依赖
1
2
3
4<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>环境配置
1
2
3
4
5
6
7
8
9
10
11
12spring:
redis:
host: localhost
port: 6379
password: 123456
database: 0 # redis提供了16个数据库我们使用0号数据库
jedis:
pool:
max-active: 8 #最大连接数
max-wait: 1ms #最长阻塞时间
max-idle: 4 # 最大空闲连接
min-idle: 0 # 最小空闲连接
- 导入依赖
- 切换数据库
1
2
3
4127.0.0.1:6379> select 1 ;默认为0号数据库
ok
127.0.0.1:6379[1]> get name ;默认为0号数据库
(nil)