使用本地redis 步骤 本地redis启动

1--安装与开启服务:

下载地址: https://github.com/MSOpenTech/redis/releases

Redis 支持 32 位和 64 位。这个需要根据你系统平台的实际情况选择,这里我们下载 Redis-x64-xxx.zip压缩包到 C 盘,解压后,将文件夹重新命名为 redis。

 

打开一个 cmd 窗口 使用cd命令切换目录到 C:\redis(刚刚自己解压的那个目录里面) 

运行 redis-server.exe redis.windows.conf 。

如果想方便的话,可以把 redis 的路径加到系统的环境变量里,这样就省得再输路径了,后面的那个 redis.windows.conf 可以省略,如果省略,会启用默认的。

切换目录:cd D:\Redis

开启服务:redis-server.exe redis.windows.conf

截图如下:

                                                            

此时将开启的命令窗口处于开启状态,打开另一个cmd命令窗口进行操作:不然无法访问服务端了:

新命令窗口:

进入redis目录:   cd D:\Redis

运行命令:        redis-cli.exe -h 127.0.0.1 -p 6379

截图如下:

                                                            

2--redis命令操作:

登录口:6379, 默认使用ip :127.0.0.1

操作数据:redis具备五种数据类型     String     Hash        List        Set           Zset

String类型(包含基础命令)

1
2
3
4
5
6
7
8
9
10
11
keys * :查看当前redis节点(启动的每一个redis服务都叫redis节点。)所有已存在的key值。
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> set name hanlaoshi
OK
127.0.0.1:6379> set location beijing
OK
127.0.0.1:6379> keys *
1) "location"
2) "name"
127.0.0.1:6379>

 

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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
set key value:存储一个key-value结构的数据(String),覆盖一个同名key值得数据
127.0.0.1:6379> set age 22
OK
127.0.0.1:6379> keys *
1) "location"
2) "age"
3) "name"
127.0.0.1:6379> get age
"22"
127.0.0.1:6379> set age 33
OK
127.0.0.1:6379> get age
"33"
127.0.0.1:6379>
  
get key:获取当前key对应的value数据
127.0.0.1:6379> get age
"22"
127.0.0.1:6379> set age 33
OK
127.0.0.1:6379> get age
"33"
127.0.0.1:6379>
  
select 整数:redis中默认存在16个数据分库(database),index号0-15,在一个服务器节点上,可以区分多种类型,多种功能的数据库仓库,默认登录的是0号分库(现在使用不多)
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> keys *
(empty list or set)
127.0.0.1:6379[1]> select 0
OK
127.0.0.1:6379> keys *
1) "location"
2) "age"
3) "name"
127.0.0.1:6379>
  
exists key:判断当前节点是否包含key的数据。
get也可以完成这个任务。redis在key-value结构的value存储容量是512M。使用get判断存在会先读在判断数据是否为空,浪费资源
127.0.0.1:6379> exists haha kaka age
(integer) 1
127.0.0.1:6379> exists age
(integer) 1
127.0.0.1:6379> exists haha
(integer) 0
127.0.0.1:6379>
  
del key:删除key值对应的key-value数据;
127.0.0.1:6379> del age
(integer) 1
127.0.0.1:6379> del haha
(integer) 0
127.0.0.1:6379> keys *
1) "location"
2) "name"
127.0.0.1:6379>
  
type key:查看当前key的类型
127.0.0.1:6379> type name
string
127.0.0.1:6379>
  
help 命令名称:一般到官网查询详细讲解;按照案例
  
save:将当前的内存数据保存到磁盘文件(根目录dump.rdb)
127.0.0.1:6379> keys *
1) "location"
2) "name"
127.0.0.1:6379> save
OK
127.0.0.1:6379>
save前,save后观察redis根目录的dump.rdb大小可以发现已经存储到持久化文件---大小会发生变化
  
flushall:将当前redis所有数据清洗,包括持久化文件,内存数据(创建集群的时候使用)
127.0.0.1:6379> keys *
1) "location"
2) "name"
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> set name wanglaoshi
OK
127.0.0.1:6379[1]> set age 11
OK
127.0.0.1:6379[1]> keys *
1) "age"
2) "name"
127.0.0.1:6379[1]> save
OK
127.0.0.1:6379[1]> flushall
OK
127.0.0.1:6379[1]> keys *
(empty list or set)
127.0.0.1:6379[1]> select 0
OK
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379>
  
flushdb:清空一个分库的数据,不删除持久化文件内容(进行测试使用)
127.0.0.1:6379[1]> flushdb
OK
127.0.0.1:6379[1]> keys *
(empty list or set)
127.0.0.1:6379[1]> select 0
OK
127.0.0.1:6379> keys (
(empty list or set)
127.0.0.1:6379> keys *
1) "name"
127.0.0.1:6379>
  
redis中string字符串如果是纯数字,也有一些简单的数字操作命令
incr decr key:自增1,自减1;计步器
127.0.0.1:6379> set num 100
OK
127.0.0.1:6379> incr num
(integer) 101
127.0.0.1:6379> decr num
(integer) 100
127.0.0.1:6379>
  
多步计步器:incrby decrby key 整数:对key的value数字自增自减去整数步数
127.0.0.1:6379> incrby num 10
(integer) 110
127.0.0.1:6379> decrby num 10
(integer) 100
127.0.0.1:6379>
  
mset mget:批量操作(不支持多节点分布式,只能对本节点数据进行处理)(测试时确定当前节点拥有的数据)
127.0.0.1:6379> mset num1 200 num2 300 num3 400
OK
127.0.0.1:6379> keys *
1) "num3"
2) "name"
3) "num"
4) "100"
5) "num1"
6) "num2"
127.0.0.1:6379> mget num1 num2 num3
1) "200"
2) "300"
3) "400"
127.0.0.1:6379>
  
LRU(lasted recent unused)自动删除策略:如果redis内存达到自动删除启动瓶颈 Last Recent Unused最近最久未使用key
expire key:对key添加超时过期的设定
配合ttl key可以查看 key值剩余时间,已经超时的内容删除,ttl剩余时间是-2 -1表示永久数据
127.0.0.1:6379> ttl num1
(integer) -2
127.0.0.1:6379> keys *
1) "num3"
2) "name"
3) "num"
4) "100"
5) "num2"
127.0.0.1:6379> ttl name
(integer) -1
127.0.0.1:6379>
  
append key value :对key对应的value进行追加数据操作;

Hash数据类型:

对应value为hash结构的数据都是面向对象的数据结构

                                                                                                   

 

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
hset key field value:key 是 相当于变量名,filed是value中的key-value对中的key,但是面向对象时表示一个对象的属性名称, value表示属性的值
127.0.0.1:6379> hset user username hanlaoshi
(integer) 1
127.0.0.1:6379> hset user age 18
(integer) 1
127.0.0.1:6379> hset user location beijing
(integer) 1
127.0.0.1:6379> type user
hash
127.0.0.1:6379>
  
hget key field
127.0.0.1:6379> hget user username
"hanlaoshi"
127.0.0.1:6379>
  
hexists key field:判断hash类型中的属性值是否存在
127.0.0.1:6379> hexists user haha
(integer) 0
127.0.0.1:6379> hexists user age
(integer) 1
127.0.0.1:6379>
  
hmset和hmget:批量设置,不支持分布式
127.0.0.1:6379> hmset student age 19 name wangxiaoxiao gender male
OK
127.0.0.1:6379> hmget student age name gender
1) "19"
2) "wangxiaoxiao"
3) "male"
127.0.0.1:6379>
  
Hdel key field:删除属性和值
127.0.0.1:6379> hdel student age
(integer) 1
127.0.0.1:6379> hget student age
(nil)
127.0.0.1:6379>

Hkeys Hvals:单独获取对象的属性名,或者属性的值:

                                                 

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
127.0.0.1:6379> hkeys user
1) "name"
2) "username"
3) "age"
4) "location"
127.0.0.1:6379> hvals user
1) "haha"
2) "hanlaoshi"
3) "18"
4) "beijing"
127.0.0.1:6379>
  
Hlen key:获取属性个数(长度)
127.0.0.1:6379> hlen user
(integer) 4
127.0.0.1:6379> hlen student
(integer) 2
127.0.0.1:6379>
  
  
Hincreby:和String类型特性区别的一个体现
  
String对应存储对象数据:需要在redis中修改对象某个属性的数值(10-15)
{“id”:1623125,"age":10,“name”:"hanlaoshi"}
不能直接在redis中获取age将10变成15,
从redis读出来,转化成对象,对象set属性,重新放回redis
和hash存储对象数据
user id 1623125
  age 10
 name hanlaoshi
  
Hincreby user name 5

 

List链表数据结构: 

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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
list01--{“200”,"300","400"}
查看链表list和设置链表数据Lpush(左表示上,右表示下)
lpush key value [vlaues]:对于一个链表,从左(上)开始插入数据;
  
lrange key 起始下标 结束下标(展示范围,结束下标是-1表示到尾部)
 
127.0.0.1:6379> lpush mylist01 100 200 300
(integer) 3
127.0.0.1:6379> lrange mylist 0 1
(empty list or set)
127.0.0.1:6379> lrange mylist01 0 1
1) "300"
2) "200"
127.0.0.1:6379>
  
Rpush key value:从下向上插入数据
127.0.0.1:6379> rpush mylist01 400
(integer) 4
127.0.0.1:6379> lrange mylist01 0 -1
1) "300"
2) "200"
3) "100"
4) "400"
127.0.0.1:6379>
  
Linsert:从链表中间操作数据,从左侧找到第一个相同元素插入数据(before after)
linsert mylist01 before 100 one
在mylist01链表中,找到100这个元素,从前插入数据one 300 200 one 100 400
127.0.0.1:6379> linsert mylist01 before 100 one
(integer) 5
127.0.0.1:6379> lrange mylist01 0 -1
1) "300"
2) "200"
3) "one"
4) "100"
5) "400"
127.0.0.1:6379> lpush mylist01 100
(integer) 6
127.0.0.1:6379> lrange mylist01 0 -1
1) "100"
2) "300"
3) "200"
4) "one"
5) "100"
6) "400"
127.0.0.1:6379> linsert mylist01 after 100 two
(integer) 7
127.0.0.1:6379> lrange mylist01 0 -1
1) "100"
2) "two"
3) "300"
4) "200"
5) "one"
6) "100"
7) "400"
127.0.0.1:6379>
  
lset key index value将下标对应的数据修改,将指定索引下标对应的值改为指定的值
127.0.0.1:6379> lset mylist01 1 2
OK
127.0.0.1:6379> lrange mylist01 0 -1
1) "100"
2) "2"
3) "300"
4) "200"
5) "one"
6) "100"
7) "400"
127.0.0.1:6379>
  
Lrem:这个没有rrem,内部逻辑涉及到了从下往上删除
lrem key count value:从左向右寻找count个value相同值元素删除。
count>0从左往右删
count=0 全删
count<0从右往左删
127.0.0.1:6379> lpush mylist01 200 200 200
(integer) 9
127.0.0.1:6379> lrange mylist01 0 -1
1) "200"
2) "200"
3) "200"
4) "2"
5) "300"
6) "200"
7) "one"
8) "100"
9) "400"
127.0.0.1:6379> lrem mylist01 -2 200
(integer) 2
127.0.0.1:6379> lrange mylist01 0 -1
1) "200"
2) "200"
3) "2"
4) "300"
5) "one"
6) "100"
7) "400"
127.0.0.1:6379> lrem mylist01 0 200
(integer) 2
127.0.0.1:6379>
  
ltrim 保留链表的范围内的数据元素
ltrim key 起始位置 结束位置(-1表示到尾部)
127.0.0.1:6379> ltrim mylist01 4 6
OK
127.0.0.1:6379> lrange mylist01 0 -1
1) "400"
127.0.0.1:6379>
  
两个链表的数据交互
lpop 从list头部删除元素,返回删除结果(类似remove) 秒杀逻辑,可以利用list对象实现阻止超卖现象
127.0.0.1:6379> lrange mylist01 0 -1
1) "six"
2) "five"
3) "four"
4) "three"
5) "two"
6) "one"
7) "400"
127.0.0.1:6379> lpop mylist01
"six"
127.0.0.1:6379> lrange mylist01 0 -1
1) "five"
2) "four"
3) "three"
4) "two"
5) "one"
6) "400"
127.0.0.1:6379>
  
rpoplpush:从第一个list的尾部删除数据,移动到第二个list的头部添加
127.0.0.1:6379> rpoplpush mylist01 mylist02
"400"
127.0.0.1:6379> lrange mylist02 0 -1
1) "400"
2) "5"
3) "4"
4) "3"
5) "2"
6) "1"
127.0.0.1:6379>
posted @   chelsey3tsf  阅读(5163)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
点击右上角即可分享
微信分享提示