一、关于Redis

Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。它支持字符串哈希表列表集合有序集合位图hyperloglogs等数据类型。

官网:https://redis.io/download,网传Redis是不支持windows的,但是,Microsoft开放技术小组 使这一切有了可能 ;  window版下载地址:点击下载


二、安装和配置Redis

下载Redis For  window X64.zip,加压到指定目录,如下图所示我解压到了D盘

redis for mac 客户端 redis windows客户端_操作系统

打开cmd命令窗口,安装和注册redis到window服务,注意安装和启动服务这两个操作需要在解压Redis的根目录执行,这里才有Redis环境

安装命令:redis-server.exe --service-install redis.windows.conf --loglevel verbose

启动服务命令:redis-server.exe  --service-start

关闭服务命令:redis-server.exe  --service-stop

redis for mac 客户端 redis windows客户端_redis_02

安装和注册服务,启动服务启动后我们都可以看到 successfully的字样,说明我们配置成功了,下面我们去window-service查看本地服务,如下图,Redis已存在和启动

redis for mac 客户端 redis windows客户端_redis for mac 客户端_03



三、客户端使用Redis

注意:记得配置redis的环境变量,不然每次要进入到redis的目录下执行命令

我们重新打开一个cmd ,作为一个客户端调用redis服务,如下图所示,调用命令是:redis-cli.exe -h 127.0.0.1 -p 6379,如下图显示地址和端口,说明调用成功

然后我们使用set 和get 命令进行测试一下,set uname "abc",然后使用get uname可以获取到对应set的值,说明调用成功

redis for mac 客户端 redis windows客户端_数据结构与算法_04



四、Redis注意和其他

需要注意的是:所有命令需要在window解压的redis根目录执行,免安装的情况下,window 切换目录需要首先切到盘符D:然后cd到盘符的指定路径

相关配置文件和官方文档都在下载的目录中,比如下面的conf文件可以修改服务的端口号,默认的是6397

redis for mac 客户端 redis windows客户端_数据结构与算法_05

为了安全还需要给redis设置密码,默认安装后是没有密码的,修改方法,修改redis.windows.conf和 redis.windows-service.conf文件找到requirepass这一行加上自己的密码即可,如下图所示,修改后需要重启redis服务

redis for mac 客户端 redis windows客户端_数据库_06

验证修改成功,如下图,进入客户端调用界面输入auth 密码,如果正切则返回OK,然后利用config get requirepass可以得到redis的密码,得到密码前需要

用密码登录验证成功后才可以执行得到密码的命令

redis for mac 客户端 redis windows客户端_redis_07


五、Redis客户端命令

  • Windows命令行启动Redis客户端

1. 使用默认IP地址和端口连接Redis数据库(IP地址:127.0.0.1,端口号6379)

redis-cli


2. 使用指定IP地址和端口连接Redis数据库

redis-cli -h 192.168.2.144 -p 6379


  • 查询所有键值

keys *


  • 读写String类型的Value

1 set name ‘ljx’//写String类型

2 get name//读String类型


  • 读写List类型的Value
//写List类型
1 rpush friends 'lyt'
2 rpush friends 'zqj'
 
 
//读List类型
3 lrange friends 0 -1


  •  读写Hash类型的Value
//写Hash类型
1 hset address province 'sichuan'
2 hset address city 'chengdu'
3 hset address detail 'tianfuxingu'
//读Hash类型
4 hgetall address



  • Redis指令集
1 quit:关闭连接(connection)
 2 auth:简单密码认证
 3  
 4 持久化
 5  
 6 save:将数据同步保存到磁盘
 7 bgsave:将数据异步保存到磁盘
 8 lastsave:返回上次成功将数据保存到磁盘的Unix时戳
 9 shundown:将数据同步保存到磁盘,然后关闭服务
10  
11 远程服务控制
12  
13 info:提供服务器的信息和统计
14 monitor:实时转储收到的请求
15 slaveof:改变复制策略设置
16 config:在运行时配置Redis服务器
17  
18 对value操作的命令
19  
20 exists(key):确认一个key是否存在
21 del(key):删除一个key
22 type(key):返回值的类型
23 keys(pattern):返回满足给定pattern的所有key
24 randomkey:随机返回key空间的一个
25 keyrename(oldname, newname):重命名key
26 dbsize:返回当前数据库中key的数目
27 expire:设定一个key的活动时间(s)
28 ttl:获得一个key的活动时间
29 select(index):按索引查询
30 move(key, dbindex):移动当前数据库中的key到dbindex数据库
31 flushdb:删除当前选择数据库中的所有key
32 flushall:删除所有数据库中的所有key
33  
34 对String操作的命令
35  
36 set(key, value):给数据库中名称为key的string赋予值value
37 get(key):返回数据库中名称为key的string的value
38 getset(key, value):给名称为key的string赋予上一次的value
39 mget(key1, key2,…, key N):返回库中多个string的value
40 setnx(key, value):添加string,名称为key,值为value
41 setex(key, time, value):向库中添加string,设定过期时间time
42 mset(key N, value N):批量设置多个string的值
43 msetnx(key N, value N):如果所有名称为key i的string都不存在
44 incr(key):名称为key的string增1操作
45 incrby(key, integer):名称为key的string增加integer
46 decr(key):名称为key的string减1操作
47 decrby(key, integer):名称为key的string减少integer
48 append(key, value):名称为key的string的值附加value
49 substr(key, start, end):返回名称为key的string的value的子串
50  
51 对List操作的命令
52  
53 rpush(key, value):在名称为key的list尾添加一个值为value的元素
54 lpush(key, value):在名称为key的list头添加一个值为value的 元素
55 llen(key):返回名称为key的list的长度
56 lrange(key, start, end):返回名称为key的list中start至end之间的元素
57 ltrim(key, start, end):截取名称为key的list
58 lindex(key, index):返回名称为key的list中index位置的元素
59 lset(key, index, value):给名称为key的list中index位置的元素赋值
60 lrem(key, count, value):删除count个key的list中值为value的元素
61 lpop(key):返回并删除名称为key的list中的首元素
62 rpop(key):返回并删除名称为key的list中的尾元素
63 blpop(key1, key2,… key N, timeout):lpop命令的block版本。
64 brpop(key1, key2,… key N, timeout):rpop的block版本。
65 rpoplpush(srckey, dstkey):返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部
66  
67 对Set操作的命令
68  
69 sadd(key, member):向名称为key的set中添加元素member
70 srem(key, member) :删除名称为key的set中的元素member
71 spop(key) :随机返回并删除名称为key的set中一个元素
72 smove(srckey, dstkey, member) :移到集合元素
73 scard(key) :返回名称为key的set的基数
74 sismember(key, member) :member是否是名称为key的set的元素
75 sinter(key1, key2,…key N) :求交集
76 sinterstore(dstkey, (keys)) :求交集并将交集保存到dstkey的集合
77 sunion(key1, (keys)) :求并集
78 sunionstore(dstkey, (keys)) :求并集并将并集保存到dstkey的集合
79 sdiff(key1, (keys)) :求差集
80 sdiffstore(dstkey, (keys)) :求差集并将差集保存到dstkey的集合
81 smembers(key) :返回名称为key的set的所有元素
82 srandmember(key) :随机返回名称为key的set的一个元素
83  
84 对Hash操作的命令
85  
86 hset(key, field, value):向名称为key的hash中添加元素field
87 hget(key, field):返回名称为key的hash中field对应的value
88 hmget(key, (fields)):返回名称为key的hash中field i对应的value
89 hmset(key, (fields)):向名称为key的hash中添加元素field
90 hincrby(key, field, integer):将名称为key的hash中field的value增加integer
91 hexists(key, field):名称为key的hash中是否存在键为field的域
92 hdel(key, field):删除名称为key的hash中键为field的域
93 hlen(key):返回名称为key的hash中元素个数
94 hkeys(key):返回名称为key的hash中所有键
95 hvals(key):返回名称为key的hash中所有键对应的value
96 hgetall(key):返回名称为key的hash中所有的键(field)及其对应的value