Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 341af2c

Browse files
update
1 parent 8557f1b commit 341af2c

File tree

1 file changed

+261
-0
lines changed

1 file changed

+261
-0
lines changed

‎article/java/basic/Redis.md

Lines changed: 261 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,261 @@
1+
# Redis 使用手册
2+
3+
## 简介
4+
5+
Redis(Remote Dictionary Server)是一个由 Salvatore Sanfilippo 写的 key-value 存储系统,是跨平台的非关系型数据库。
6+
7+
Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库,并提供多种语言的 API。
8+
9+
Redis 通常被称为数据结构服务器,因为(value)可以是字符串(String)、哈希(Hash)、列表(List)、集合(sets)和有序集合(sorted sets)等类型。
10+
11+
## 安装
12+
13+
下载地址:https://github.com/tporadowski/redis/releases
14+
15+
Windows 下安装:Redis 支持 32 位和 64 位。这个需要根据你系统平台的实际情况选择,这里我们下载 Redis-x64-xxx.zip 压缩包并解压(例如解压后目录为:D:\Develop\Redis-x64-5.0.14.1)。
16+
17+
打开一个 cmd 窗口 使用 cd 命令切换目录到解压目录:
18+
19+
> $ cd D:\Develop\Redis-x64-5.0.14.1
20+
21+
运行命令:
22+
23+
> $ ./redis-server.exe redis.windows.conf
24+
25+
后面的那个 redis.windows.conf 可以省略,如果省略,会启用默认的,显示如下:
26+
27+
```text
28+
PS D:\Develop\Redis-x64-5.0.14.1> ./redis-server.exe redis.windows.conf
29+
[25528] 12 Sep 18:49:49.119 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
30+
[25528] 12 Sep 18:49:49.119 # Redis version=5.0.14.1, bits=64, commit=ec77f72d, modified=0, pid=25528, just started
31+
[25528] 12 Sep 18:49:49.119 # Configuration loaded
32+
_._
33+
_.-``__ ''-._
34+
_.-`` `. `_. ''-._ Redis 5.0.14.1 (ec77f72d/0) 64 bit
35+
.-`` .-```. ```\/ _.,_ ''-._
36+
( ' , .-` | `, ) Running in standalone mode
37+
|`-._`-...-` __...-.``-._|'` _.-'| Port: 6379
38+
| `-._ `._ / _.-' | PID: 25528
39+
`-._ `-._ `-./ _.-' _.-'
40+
|`-._`-._ `-.__.-' _.-'_.-'|
41+
| `-._`-._ _.-'_.-' | http://redis.io
42+
`-._ `-._`-.__.-'_.-' _.-'
43+
|`-._`-._ `-.__.-' _.-'_.-'|
44+
| `-._`-._ _.-'_.-' |
45+
`-._ `-._`-.__.-'_.-' _.-'
46+
`-._ `-.__.-' _.-'
47+
`-._ _.-'
48+
`-.__.-'
49+
50+
[25528] 12 Sep 18:49:49.135 # Server initialized
51+
[25528] 12 Sep 18:49:49.135 * Ready to accept connections
52+
```
53+
54+
这时候另启一个 cmd 窗口,原来的不要关闭,不然就无法访问服务端了。
55+
56+
切换到 redis 目录下运行:
57+
58+
> $ ./redis-cli.exe -h 127.0.0.1 -p 6379
59+
60+
设置键值对:
61+
62+
> $ set myKey abc
63+
64+
取出键值对:
65+
66+
> $ get myKey
67+
68+
输出如下:
69+
70+
```text
71+
127.0.0.1:6379> set myKey abc
72+
OK
73+
127.0.0.1:6379> get myKey
74+
"abc"
75+
127.0.0.1:6379>
76+
```
77+
78+
## 数据类型
79+
80+
Redis 支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
81+
82+
### String(字符串)
83+
84+
string 类型是 Redis 最基本的数据类型,string 类型的值最大能存储 512MB。
85+
86+
string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据。比如 jpg 图片或者序列化的对象。
87+
88+
示例:
89+
90+
> // 设置一个字符串
91+
>
92+
> $ set test "这是一个字符串,哈哈哈哈哈哈"
93+
>
94+
> // 读取字符串
95+
>
96+
> $ get test
97+
98+
输出如下:
99+
100+
```text
101+
127.0.0.1:6379> set test "这是一个字符串,哈哈哈哈哈哈"
102+
OK
103+
127.0.0.1:6379> get test
104+
"这是一个字符串,哈哈哈哈哈哈"
105+
```
106+
107+
### Hash(哈希)
108+
109+
Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。
110+
111+
每个 hash 可以存储 232 -1 键值对(40多亿)。
112+
113+
示例:
114+
115+
> // 设置一个 Hash
116+
>
117+
> $ hmset person name "dnm" age 18
118+
>
119+
> // 读取 person 的 name
120+
>
121+
> $ hget person name
122+
>
123+
> // 读取 person 的 age
124+
>
125+
> $ hget person age
126+
>
127+
> // 删除 person
128+
>
129+
> $ del person
130+
131+
输出如下:
132+
133+
```text
134+
127.0.0.1:6379> hmset person name "dnm" age 18
135+
OK
136+
127.0.0.1:6379> hget person name
137+
"dnm"
138+
127.0.0.1:6379> hget person age
139+
"18"
140+
127.0.0.1:6379> del person
141+
(integer) 1
142+
```
143+
144+
### List(列表)
145+
146+
Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。
147+
148+
列表最多可存储 232 - 1 元素 (4294967295, 每个列表可存储40多亿)。
149+
150+
示例:
151+
152+
> // 向列表 list 中插入一条数据 apple
153+
>
154+
> $ lpush list apple
155+
> $ lpush list banana
156+
> $ lpush list orange
157+
>
158+
> // 读取 list 中的前 10 条数据
159+
>
160+
> $ lrange list 0 10
161+
162+
输出如下:
163+
164+
```text
165+
127.0.0.1:6379> lpush list apple
166+
(integer) 1
167+
127.0.0.1:6379> lpush list banana
168+
(integer) 2
169+
127.0.0.1:6379> lpush list orange
170+
(integer) 3
171+
127.0.0.1:6379> lrange list 0 10
172+
1) "orange"
173+
2) "banana"
174+
3) "apple"
175+
```
176+
177+
### Set(集合)
178+
179+
Redis 的 Set 是 string 类型的无序集合。
180+
181+
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
182+
183+
#### sadd 命令
184+
185+
添加一个 string 元素到 key 对应的 set 集合中,成功返回 1,如果元素已经在集合中返回 0。
186+
187+
示例:
188+
189+
> // 向集合 set 中插入一条数据 apple
190+
>
191+
> $ sadd set apple
192+
> $ sadd set banana
193+
> $ sadd set orange
194+
>
195+
> // 读取 set 中的数据
196+
>
197+
> $ smembers set
198+
199+
输出如下:
200+
201+
```text
202+
127.0.0.1:6379> sadd set apple
203+
(integer) 1
204+
127.0.0.1:6379> sadd set banana
205+
(integer) 1
206+
127.0.0.1:6379> sadd set orange
207+
(integer) 1
208+
127.0.0.1:6379> smembers set
209+
1) "orange"
210+
2) "apple"
211+
3) "banana"
212+
```
213+
214+
#### zset(sorted set:有序集合)
215+
216+
Redis zset 和 set 一样也是 string 类型元素的集合,且不允许重复的成员。
217+
218+
不同的是每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为集合中的成员进行从小到大的排序。
219+
220+
zset 的成员是唯一的,但分数(score)却可以重复。
221+
222+
#### zadd 命令
223+
224+
添加元素到集合,元素在集合中存在则更新对应 score。
225+
226+
示例:
227+
228+
> // 向集合 set 中插入一条数据 apple
229+
>
230+
> $ zadd set_order 0 apple
231+
> $ zadd set_order 0 banana
232+
> $ zadd set_order 0 orange
233+
>
234+
> // 读取 set 中的数据
235+
>
236+
> $ zrangebyscore set_order 0 10
237+
238+
输出如下:
239+
240+
```text
241+
127.0.0.1:6379> zadd set_order 0 apple
242+
(integer) 1
243+
127.0.0.1:6379> zadd set_order 0 banana
244+
(integer) 1
245+
127.0.0.1:6379> zadd set_order 0 orange
246+
(integer) 1
247+
127.0.0.1:6379> zrangebyscore set_order 0 10
248+
1) "apple"
249+
2) "banana"
250+
3) "orange"
251+
```
252+
253+
## 参考资料
254+
255+
Redis 官网:https://redis.io
256+
257+
源码地址:https://github.com/redis/redis
258+
259+
Redis 在线测试:http://try.redis.io/
260+
261+
Redis 教程:https://www.runoob.com/redis/redis-tutorial.html

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /