当前位置:首页 > CN2资讯 > 正文内容

redis windows10 版本下载 redis有windows版吗

1天前CN2资讯


1、windows 上安装 Redis

便于测试,笔者在 windows 上安装 Redis,如有现成Linux下的Redis和Python环境,也可直接使用。

Redis 官方不建议在 windows 下使用 Redis,所以官网没有 windows 版本可以下载。微软团队维护了开源的 windows 版本,普通测试足够使用了。

1.1、安装包方式安装 Redis 服务

下载地址:https:///MicrosoftArchive/redis/releases

下载 Redis-x64-3.0.504.msi  按提示一步步操作

也可以使用下面链接下载。

https:///rgl/redis/downloads

下载完成之后根据引导流程安装即可。

打开 Redis 程序目录:

文件说明:

redis-server.exe:服务端程序,提供 redis 服务

redis-cli.exe: 客户端程序,通过它连接 redis 服务并进行操作

redis-check-dump.exe:RDB 文件修复工具

redis-check-aof.exe:AOF 文件修复工具

redis-benchmark.exe:性能测试工具,用以模拟同时由 N 个客户端发送 M 个 SETs/GETs 查询 (类似于 Apache 的 ab 工具)

redis.windows.conf: 配置文件,将 redis 作为普通软件使用的配置,命令行关闭则 redis 关闭

redis.windows-service.conf:配置文件,将 redis 作为系统服务的配置

单击 redis-server.exe,启动 Redis 服务。

检查 Redis 是否已连接。

客户端使用 PING 命令,返回PONG则说明正常安装。

1.2、直接解压的方式安装 redis

首先下载 redis 安装包:https:///MSOpenTech/redis/releases

解压安装包到相应文件夹,任何盘符都行,例如 E:\Redis-x64-3.0.504

使用命令行启动 Redis 服务

运行 cmd,cd 进入对应目录 E:\Redis-x64-3.0.504,执行:

redis-server.exe redis.windows.conf

可以把 redis 的路径加到系统的环境变量里,这样就无需再输路径了(如下截图),后面的redis.windows.conf 可以省略,如果省略,会使用默认的参数。

安装 redis 到 windows 服务

redis-server --service-install redis.windows.conf

查看 windows 服务是否加入:

关闭打开的第一个 cmd 窗口,执行以下命令启动再次 redis:

redis-server --service-start

停止 redis 服务:

redis-server --service-stop

测试redis 是否能够正常使用:

切换到 redis 目录下:E:\Redis-x64-3.0.504  下:

redis-cli.exe -h 127.0.0.1 -p 6379

1.3、设置密码 -

使用文本编辑器,打开Redis服务配置文件redis.windows-service.conf。注意不是redis.windows.conf,该文件是以非系统服务方式启动程序使用的配置文件。

找到含有requirepass字样的地方,追加一行,输入requirepass  123456。 这是访问Redis时所需的密码,一般测试情况下可以不用设定密码。建议按常规设定一个密码。

设置完成后需要重启Redis-server生效,重连Redis客户端,可以看到需要验证密码。

E:\Redis-x64-3.0.504>redis-cli 127.0.0.1:6379> ping (error) NOAUTH Authentication required. 127.0.0.1:6379> auth 123456 OK 127.0.0.1:6379> ping PONG 127.0.0.1:6379> 127.0.0.1:6379> set name zhuling OK 127.0.0.1:6379> get name "zhuling" 127.0.0.1:6379> exit

2、安装redis模块

Python 使用 Redis 相对比较简单,Python 专门提供了操作 Redis 的第三方模块,即 redis 模块,该模块可以直接使用 Python 包管理工具pip来安装。

下面以 Windows 系统为例,使用包管理工具安装 redis 模块,命令如下:

python -m pip install redis

如果是 Linux 系统,需要执行以下命令来安装:

sudo pip3 install redis

如下:          

E:\Redis-x64-3.0.504>python -m pip install redis DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 is no longer maintained. pip 21.0 will drop support for Python 2.7 in January 2021. More details about Python 2 support in pip, can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support Collecting redis WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out. (read timeout=15)",)': /packages/a7/7c/24fb0511df653cf1a5d938d8f5d19802a88cef255706fdda242ff97e91b7/redis-3.5.3-py2.py3-none-any.whl Downloading redis-3.5.3-py2.py3-none-any.whl (72 kB) |████████████████████████████████| 72 kB 53 kB/s Installing collected packages: redis Successfully installed redis-3.5.3 WARNING: You are using pip version 20.1.1; however, version 20.3.4 is available. You should consider upgrading via the 'E:\python-2.7.18\python.exe -m pip install --upgrade pip' command.

测试是否导入成功

>>> import redis >>> r = redis.Redis(host='127.0.0.1',port=6379,db=0,password='123456') >>> print(r.keys('*')) ['name'] >>> print(r.get('name')) zhuling >>>

3、Python 操作Redis数据库

3.1、Redis连接

redis 模块分两种连接模式:直接模式和连接池模式,都可以操作 Redis。

1) 直连模式

import redis

# 本地连接,创建数据库连接对象

r = redis.Redis(host='127.0.0.1',port=6379,db=0,password='123456')

上述代码中,db 表示当前选择的库,其参数值可以是 0-15;如果设置连接数据库的密码,那么就需要使用 password 进行验证,否则可以省略。

>>> import redis >>> r = redis.Redis(host='127.0.0.1',port=6379,db=0,password='123456') >>> r.set('age',32) True >>> r.get('age') '32' >>>

2) 连接池模式

redis 模块使用 connection pool(连接池)来管理 redis server 的所有连接,每个 Redis 实例都会维护一个属于自己的连接池,这样做的目的是为了减少每次连接或断开的性能消耗。

当有新的客户端请求连接时,只需要去连接池获取一个连接即可,实际上就是把一个连接共享给多个客户端使用,这样就节省了每次连接所耗费的时间。

多个 Redis 实例共享一个连接池,代码如下:

import redis

#创建连接池并连接到redis,并设置最大连接数量;

conn_pool = redis.ConnectionPool(host='127.0.0.1',port=6379,max_connections=10,password='xxxx')

# 第一个客户端访问

re_pool1 = redis.Redis(connection_pool=conn_pool)

# 第二个客户端访问

re_pool2 = redis.Redis(connection_pool=conn_pool)

    ...

示例:

>>> import redis >>> conn_pool = redis.ConnectionPool(host='127.0.0.1',port=6379,max_connections=2,password='123456') >>> re_pool1 = redis.Redis(connection_pool=conn_pool) >>> re_pool2 = redis.Redis(connection_pool=conn_pool) >>> re_pool3 = redis.Redis(connection_pool=conn_pool) >>> re_pool4 = redis.Redis(connection_pool=conn_pool) >>> re_pool4.set('skill','sing') True >>> re_pool1.set('school','gzschool') True >>> re_pool2.set('teacher','jhon') True >>> re_pool3.keys('*') ['school', 'teacher', 'name', 'age', 'skill'] >>>

3.2、Python Redis常规操作

如下脚本中使用 Python 操作 Redis 数据库的通用命令。

redisty.py

#usr/bin/python #-*- coding:utf-8 -*- #author:Fieldyang #description :python操作Redis 常规用法 import redis r = redis.Redis(host='127.0.0.1',port=6379,db=0,password='123456') print(r.keys('*')) key_list = r.keys('*') #转换为字符串 for key in key_list: #查看key类型 print(r.type(key)) print(key.decode(),r.get(key)) # 返回值: 0 或者 1 print(r.exists('username')) if "age" in key_list: r.get('age') # 删除key r.delete('age') print("删除age成功") else: print("不存在age键") r.close();

脚本执行结果如下:

3.3、Python操作Redis计数

Python 操作 Redis计数常用方法如下:

redis-string.py

#usr/bin/python #-*- coding:utf-8 -*- #author:Fieldyang #description :python操作Redis 计数 import redis #连接redis服务器 r = redis.Redis(host='127.0.0.1',port=6379,db=0,password='123456') r.set('gender','female') print(r.get('gender')) #mset参数为字典 r.mset({'username':'fieldyang','password':'123'}) print r.mget('username','password') #查看value长度 print r.strlen('username') #数值操作 #redis中incr、incrby、decr、decrby属于string数据结构,它们是原子性递增或递减操作。 #incr递增1并返回递增后的结果; #incrby根据指定值做递增或递减操作并返回递增或递减后的结果(incrby递增或递减取决于传入值的正负); #decr递减1并返回递减后的结果; #decrby根据指定值做递增或递减操作并返回递增或递减后的结果(decrby递增或递减取决于传入值的正负); r.set('age','32') print r.get('age') r.incrby('age',5) print r.get('age') r.decrby('age',5) print r.get('age') r.incr('age') print r.get('age') r.decr('age') print r.get('age') r.incrbyfloat('age',5.2) print r.get('age') r.incrbyfloat('age',-10.5) print r.get('age') r.close();

脚本执行结果如下:

3.4、Python操作 Redis列表

Python 操作 list列表常用方法如下:

redis-list.py

#usr/bin/python #-*- coding:utf-8 -*- #author:Fieldyang #description :python操作Redis 列表 import redis #建立redis连接 r = redis.Redis(host='127.0.0.1',port=6379,db=0,password='8357690') r.lpush('Language','Java','Python','C#') #lpush 命令将一个或多个值插入到列表头部。 如果 key 不存在,一个空列表会被创建并执行 lpush 操作。 当 key 存在但不是列表类型时,返回一个错误。 lpush KEY_NAME VALUE1.. VALUEN ,返回列表的长度 r.rpush('Language','Perl','Node.js') #rpush 命令用于将一个或多个值插入到列表的尾部(最右边)。rpush KEY_NAME VALUE1..VALUEN r.linsert('Language','before','Python','Ruby') r.linsert('Language','after','Python','Html/css') #linsert 命令用于在列表的元素前或者后插入元素。当指定元素不存在于列表中时,不执行任何操作。当列表不存在时,被视为空列表,不执行任何操作。 linsert key before|after pivot value print(r.llen('Language')) #Llen 命令用于返回列表的长度 print(r.lrange('Language',0,-1)) #lrange 返回列表中指定区间内的元素,区间以偏移量 START 和 END 指定。 其中 0 表示列表的第一个元素, 1 表示列表的第二个元素,以此类推。 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。 lrange KEY_NAME START END print(r.rpop('Language')) #rpop 命令用于移除列表的最后一个元素,返回值为移除的元素。 print(r.ltrim('Language',0,1)) #Ltrim 对一个列表进行修剪(trim),让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。 LTRIM KEY_NAME START STOP while True: # 如果列表中为空时,则返回None result = r.brpop('Language',1) if result: print result[0]+":"+result[1] else: break r.delete('Language') #brpop 命令移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。BRPOP LIST1 LIST2 .. LISTN TIMEOUT 假如在指定时间内没有任何元素被弹出,则返回一个 nil 和等待时长。 反之,返回一个含有两个元素的列表,第一个元素是被弹出元素所属的 key ,第二个元素是被弹出元素的值。 r.close();

脚本执行结果如下:

3.5、Python操作Redis集合

Python 操作 Set 集合常用方法如下:

redis-set.py

#usr/bin/python #-*- coding:utf-8 -*- #by Fieldyang #description :python操作Redis 集合 import redis #建立redis连接 r = redis.Redis(host='127.0.0.1',port=6379,db=0,password='123456') r.sadd("set_name","fieldyang") r.sadd("set_name","joneyan","willwu") #在对应的集合中添加元素 sadd(name,values) print r.smembers('set_name') #获取name对应的集合的所有成员 smembers(name) print r.scard("set_name") #获取name对应的集合中的元素个数 scard(name) if r.sismember('set_name','tomhuang'): print "tomhuang in set_name" else: print "tomhuang not in set_name" if r.sismember('set_name','joneyan'): print "joneyan in set_name" else: print "joneyan not in set_name" #检查value是否是name对应的集合内的元素,返回值为True或False sismember(name, value) member = r.spop('set_name') print member #随机删除并返回指定集合的一个元素 spop(name) r.srem("set_name", "willwu") print r.smembers('set_name') #删除集合中的某个元素 srem(name, value) r.sadd("set_name","fieldyang","joneyan") r.sadd("set_name1","joneyan","willwu") r.sadd("set_name2","joneyan","willwu","jokerhuang") print r.sinter("set_name","set_name1","set_name2") #获取多个name对应集合的交集 sinter(keys, *args) print r.sunion("set_name","set_name1","set_name2") #获取多个name对应的集合的并集 sunion(keys, *args) r.close();

脚本执行结果如下:

3.6、Python操作Redis散列

Python 操作 hash散列常用方法如下:

#usr/bin/python #-*- coding:utf-8 -*- #by Fieldyang #description :python操作Redis hash散列 import redis r = redis.Redis(host='127.0.0.1',port=6379,db=0,password='123456') r.hset('user1','name','joneyan') # 设置或更新一条数据的value,若不存在时,则新建这条数据 hset(key, field, value) r.hset('user1','name','willwu') # 获取数据 print r.hget('user1','name') # 读取数据的指定字段属性,返回值为字符串类型 hget(key, field) # 一次性设置多个field和value user_dict1 = { 'password':'123', 'gender':'Male', 'height':'175cm' } user_dict2 = { 'name':'Joneyan', 'password':'123', 'gender':'Male', 'height':'178cm' } r.hmset('user1',user_dict1) r.hmset('user2',user_dict2) # 批量更新字段属性,参数mapping为字典类型 hmset(key, mapping) print r.hmget('user1','name','gender') # 批量读取数据的字段属性 hmget(key, fields) print r.hgetall('user1') # 获取这条数据的所有属性字段和对应的值,返回值为字典类型 hgetall(key) print(r.hkeys('user1')) # 获取这条数据的所有属性字段,返回值为列表类型 hkeys(key) print(r.hvals('user1')) # 获取这条数据的所有属性值,返回值为列表类型 hvals(key) # 删除这条数据的指定字段 hdel(key, field) r.close();

脚本执行结果如下:

3.7、结合数据库表生成redis hash

如下脚本从mysql数据库user表中获取数据生成有序字典,并将数据导出到mysqldata.txt文件,同时将表中数据同步存储成redis hash散列,生产实际使用中往往将配置表缓存为Redis hash,提高访问速度。

该实例同时演示了Python从MySQL取数,导出数据,刷入Redis缓存三个功能。

mysql-redis.py

#usr/bin/python #-*- coding:utf-8 -*- #author Fieldyang #description :Python从MySQL取数,导出数据,刷入Redis缓存 import io import os import MySQLdb import redis import time import collections os.environ['NLS_LANG'] = "AMERICAN_AMERICA.ZHS16GBK" Date = str(time.strftime("%Y%m%d-%H:%M:%S", time.localtime())) dir='I:\\python\\' file=("%smysqldata.txt" %dir) r = redis.Redis(host='127.0.0.1',port=6379,db=0,password='123456') conn = MySQLdb.connect(host="localhost", user="root", passwd="123456",db="mysql") cur = conn.cursor() list1=['Host','User','Select_priv','Insert_priv','Update_priv','Delete_priv','Create_priv','Drop_priv','Reload_priv','Shutdown_priv','Process_priv','File_priv','Grant_priv','References_priv','Index_priv','password_expired','plugin','password_lifetime'] hash=collections.OrderedDict() #collections.OrderedDict()标准的字典是无序的。而collections.OrderedDict()是一种特殊字典,能够按照键的插入顺序保留键值对在字典的次序。 sql="select Host,User,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv,Reload_priv,Shutdown_priv,Process_priv,File_priv,Grant_priv,References_priv,Index_priv,password_expired,plugin,password_lifetime from user" cur.execute(sql) rows = cur.fetchall() wfp = io.open(file,"wb+") wfp.write("[INFO:%s] Load 1 data...\n"%(Date)) b=1 for row in rows: wfp.write('---------------------------------------------recode %s----------'%b) print '---------------------------------------------recode %s----------'%b for i in range(len(list1)): hash[list1[i]]=str(list(row)[i]).encode('gbk') for k,v in hash.items(): print ("%15s:%s" %(k,v)) wfp.write("%15s:%s" %(k,v)) if r.exists("user_"+hash['User']): r.delete("user_"+hash['User']) r.hmset("user_"+hash['User'],hash) hashdata=r.hgetall("user_"+hash['User']) print hashdata b+=1 wfp.write("\n") print '----------------------------------------------End-----------' for i in r.keys("*"): if r.type(i)=="hash": print i+":" print r.hkeys("user_"+hash['User']) print r.hvals("user_"+hash['User']) else: print i+":"+r.type(i) wfp.close() cur.close(); conn.close(); r.close();

脚本执行结果如下:

    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/27838.html

    分享给朋友:

    “redis windows10 版本下载 redis有windows版吗” 的相关文章

    绿云:数字化转型与创新解决方案的行业领导者

    绿云在多个领域的业务发展展现了其强大的行业影响力。从数字乡村服务到酒店数字化解决方案,绿云的创新模式和技术实力为其赢得了广泛的市场认可。 绿云信息有限公司的数字乡村服务 通辽市绿云信息有限公司作为数字乡村服务的领军企业,专注于三农领域的信息化服务。公司通过提供数字农业、乡村治理、农业农村大数据和创新...

    CUII工业互联网平台:助力企业实现智能制造与数字化转型

    CUII的定义与背景 CUII,全称为China Unicom Industrial Internet,是中国联通精心打造的工业互联网平台。它的诞生源于对智能制造领域不断增长的需求,特别是在网络通信基础设施方面。中国联通意识到,随着工业4.0的推进,传统的网络解决方案已无法满足现代工业对高质量、高安...

    探索宝塔的历史与文化:传承与创新的结合

    宝塔,这种在中国传统文化中扮演着重要角色的建筑,具有悠久而丰富的历史。我曾在一次旅行中惊叹于那些巍峨耸立的宝塔,仿佛它们在诉说着古老的故事。它们的起源可以追溯到佛教传入中国之前,实际上,宝塔最早的样式源自印度,梵语中称之为“窣堵坡”,主要用于供奉佛陀的舍利和进行宗教仪式。 在东汉时期,佛教逐步传入中...

    为小学生选择合适的VPS:安全、易用和高性价比的评测指南

    在这个数字化时代,网络安全受到越来越多人的重视。小朋友们在网络上探索新知识、与朋友沟通时,面对的不仅是丰富的学习资源,还有潜在的网络风险。此时,VPS(虚拟个人服务器)作为一个安全、稳定的网络环境,开始逐渐进入小学生的视野。家长和学校意识到,提供一个良好的网络环境,不仅能保护孩子免受不良信息的侵害,...

    DMIT测试IP详解及VPS选择指南

    DMIT VPS服务概述 我对DMIT的了解始于他们在2017年的成立,作为一家海外VPS厂商,他们在市场上取得了显著的地位。DMIT提供的VPS服务覆盖多个地区,如中国香港、美国洛杉矶和日本东京。这些服务以对国内用户友好的优化路线而受到好评,尤其是CN2 GIA和CMIN2线路,这些线路减少了延迟...

    AS4837和AS9929线路在国际通信中的优势与应用分析

    在了解AS4837线路的历史背景时,回顾其起源与发展非常重要。AS4837线路,通常被称为中国联通的骨干网线路,最早始建于20世纪90年代。那时,随着互联网的兴起,全球对网络基础设施的需求不断增加,中国决定建立更强大的国际连接,通过AS4837将中国大陆与香港、美国、日本、韩国等多地紧密相连。这个决...