使用本地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类型(包含基础命令)

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>

 

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结构的数据都是面向对象的数据结构

                                                                                                   

 

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:单独获取对象的属性名,或者属性的值:

                                                 

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链表数据结构: 

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 @ 2023-10-27 14:36  chelsey3tsf  阅读(5911)  评论(0)    收藏  举报