Redis 介绍

Redis是一种主要基于内存存储和运行的,能快速响应的键值数据库产品。
Redis数据库产品用ANSI C语言编写而成,是开源的,遵守BSD协议。
在读写响应性能上,传统关系型数据库<MongoDB等基于磁盘读写的NOSQL数据库<Redis数据库。
在应用业务范围上,传统的关系型数据库应用业务范围最广,MongoDB主要应用于基于互联网的Web业务应用。Redis只能解决Internet应用环境下的特定应用业务。
总之,Redis由于是基于内存读写,所以读写速度在上面三者中是最快的(单服务器每秒插入处理速度可以超过八万条,这在高并发处理方面很有利),另外,Redis的应用范围相对较窄,但是互联网业务环境下很多大型网站需要它

一、Redis的安装(Windows)

Redis可以在Windows,Linux,Ubuntu等系统下安装,在这里我是在Windows(64)位系统下安装的Redis-x64-3.0.504版本。 安装包在如下链接里:Redis提取码i0x1

下载后把安装包复制到自定义盘符的新建redis文件夹中,如,D:\redis。并将压缩包解压到当前文件夹。
首先,打开cmd命令行,用cd命令进入到D:\redis,输入 redis-server.exe redis.windows.conf启动服务器,会看到如下结果:

此时不要关闭这个cmd窗口,否则将无法访问服务器端,再另外打开一个cmd窗口
进入到D:/redis,运行redis-cli.exe -h 127.0.0.1 -p 6379表示连接此服务,端口 6379
下面是进行一些基本操作进行测试
设置键值对:set a A
取出键值对:get a
结果显示如下图:
能够成功运行,表示安装成功。

二、Redis的数据类型

redis支持五种数据类型,截至2017年六月,Redis官网提供的数据结构类型已经达到八种。

1.字符串(String)

字符串是redis 最简单的数据结构
字符串内容是二进制安全的(二进制安全是指,在传输数据时,保证二进制数据的信息安全,也就是不被篡改、破译等,如果被攻击,能够及时检测出来。)也就是 redis 的 string 可以包含任何数据。比如jpg图片或者序列化的对象。

2.列表(List)

列表是由若干插入顺序排序的字符串元素组成的集合。
按照链表的插入顺序排序,读写操作时只能从其两头开始。(由于采用链表技术实现,所以在链表头插入新字符串速度非常快)。

3.集合(set)

不重复且无序的字符串元素构成的一个整体。(和列表加以区分)

4.散列表(Hash)

散列表可以存储多个键值对的映射,是无序的一种数据集合。
键中间可以采用类似:的隔离符号。键必须为字符串型内容,值可以是字符串型也可以是数字型。
Hash特别适用于存储一个对象。

5.有序集合(Sorted Set)

有序集合和散列一样都是由键值对构成的数据集合。
但是有序集合根据值进行自动排序,而散列值表不排序。有序集合可以对值进行直接操作,而散列通过键查找来获取值。
有序集合的键字符串必须唯一,值可以重复,值必须可以解析为浮点数。

6.位图(Bitmap)

7.HyperL ogLog

三、Redis 命令

上面介绍了redis数据库基于键值基本存储原理的基础上,一些经过细化分类的数据类型,下面关于是redis命令的一些比较基本的操作。
字符串命令为例
1)基本字符串操作命令包括设置,获取,删除,取长度等。
Set
set key value #设置指定key的值

127.0.0.1:6379> set name "yinyuke" #设置键名为name,值为yinyuke的字符串
OK
127.0.0.1:6379>
127.0.0.1:6379> set book "NOSQL" EX 1   #设置一秒后book过期
OK
127.0.0.1:6379> set Cname "ᅭ�ᅮ↑￧₩"    #中文出现字符编码不匹配问题
OK
127.0.0.1:6379> get Cname
"\xd2\xf3\xd3\xea\xe7\xe6"

MSet命令

127.0.0.1:6379> MSet book1 "math" book2 "English"   #对多个键设置对应的值
OK

MSetNX

127.0.0.1:6379> MSetNX book1ID 1 book2ID 2
(integer) 1
127.0.0.1:6379> MSetNX book3ID 3 book1ID 1
(integer) 0   #出现重复设值,返回0 ,整条命令不操作

Get
get key #返回键对应的值,若值不存在,则返回nil

 127.0.0.1:6379> get book1
"math"
127.0.0.1:6379> get book3
(nil)

MGet

 127.0.0.1:6379> MGet book1 book2
1) "math"
2) "English"
127.0.0.1:6379> MGet book1 book2 book3
1) "math"
2) "English"
3) (nil)

Del

127.0.0.1:6379> del name
(integer) 1
127.0.0.1:6379> get name
(nil)
127.0.0.1:6379> del book1 book2   #可以同时删除多个
(integer) 2
127.0.0.1:6379> Mget book1 book2
1) (nil)
2) (nil)

2)修改字符串操作命令包括Append,GetRange,GetSet,SetRange等
StrLen
StrLen key

127.0.0.1:6379> set name "Siri"
OK
127.0.0.1:6379> StrLen name
(integer) 4 #返回字节数,一个字母一个字节如果为汉字,则一个汉字两个字节

Append
Append key value

127.0.0.1:6379> append student "a"
(integer) 1
127.0.0.1:6379> append student "b"
(integer) 2
127.0.0.1:6379> get student
"ab"

GetRange

127.0.0.1:6379> getrange sentence 1 6   #正向从0 开始数
"hat is"
127.0.0.1:6379> get range -4 -1   #从后往前进行字符串截取
(error) ERR wrong number of arguments for 'get' command
127.0.0.1:6379>

GetSet

127.0.0.1:6379> getset student1 "c"
(nil)   #指定的键不存在,返回nil
127.0.0.1:6379> getset student a
"ab"   #指定的键存在,设置新值后返回旧值

其他的命令操作因为过于繁杂,就先不在这里演示,详细可以去看参考书籍。

四、python连接Redis

首先在连接之前,需要先在Python中安装redis模块
在命令行中输入 pip3 install redis 即可
但是在执行中我的cmd却出现了以下错误,导致python代码无法运行
WARNING: You are using pip version 19.3.1; however, version 20.0.2 is available.
在网上搜索以后,发现应该是pip版本的问题,我找到了如下解决方法:
在cmd命令行中输入如下命令:
再进行上述操作即可。

另外,代码在运行时,还会出现以下错误:
ERR Client sent AUTH, but no password is set
是因为
Redis服务器没有设置密码,但客户端向其发送了AUTH(authentication,身份验证)请求。
这时,需要进行密码设置,具体操作如下:

 127.0.0.1:6379> CONFIG get requirepass
1) "requirepass"
2) ""
127.0.0.1:6379> CONFIG set requirepass "123456"
OK
127.0.0.1:6379> AUTH 123456
OK
127.0.0.1:6379> set name yin
OK

此时,再去运行代码,就能正确运行了
python连接redis并进行一些基本操作的代码如下:

 import redis
HOST = 'localhost'PORT = '6379'PASSWORD = '123456'
r_db = redis.Redis(host=HOST,                   port=PORT,                   password=PASSWORD,                   decode_responses=True,   # decode_responses=True,写入value中为str类型,否则为字节型                   db='2')                  # 默认不写是db0
r_db.set('name','yuke')
# set的几个参数:'''前面两个,一个key,一个valueex,过期时间(秒)px,过期时间(毫秒)nx,如果设置为True,则只有name不存在时,当前set操作才执行xx,如果设置为True,则只有name存在时,当前set操作才执行'''
print(r_db['name'])print(r_db.get('name'))print(type(r_db.get('name')))

输出结果为:

yuke
yuke
<class 'str'>

参考书籍《NOSQL数据库入门与实践(基于MongoDB、Redis)》(刘瑜 王胜松著)

Redis 的安装和基本操作相关推荐

  1. Redis的安装以及基本操作简介

    所有与大数据相关的服务都必须在linux上运行,redis提供了linux和windows的版本,但是为了系统更加稳定,推荐使用linux作为服务器. Linux版redis的安装,这里选择cento ...

  2. node.js中对 redis 的安装和基本操作

    一.win下安装redis https://github.com/MicrosoftArchive/redis/releases 下载Redis-x64-3.2.100.zip,然后解压,放到自定义目 ...

  3. redis cli 删除key 模糊_Web基础配置篇(六): Redis的安装配置及基本操作

    Web基础配置篇(六): Redis的安装配置及基本操作 一.概述 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的A ...

  4. Docker安装和基本操作

    离线安装Docker系统 第一步:下载docker离线包 https://download.docker.com/linux/static/stable/x86_64/docker-20.10.6.t ...

  5. 【Redis】window(win11)系统redis的安装使用最新教程——图文介绍

    redis官方推荐redis在linux系统下使用,但在平常的开发学习当中,在window下更好测试,今天就给出window下的安装方法! 一.下载redis安装程序 redis官网的只支持linux ...

  6. Linux下redis的安装(适用centos)

    转自:https://www.cnblogs.com/_popc/p/3684835.html 第一部分:安装redis  希望将redis安装到此目录 1 /usr/local/redis 希望将安 ...

  7. Redis 入门安装(Linux)

    Redis 入门安装(Linux) 备注:该案例讲解基于CentOS6.5.Reids3.2.8 Redis 官网 中文地址:http://www.redis.cn/ 英文地址:https://red ...

  8. Redis初学:1(NoSQL的简介和Redis的安装)

    什么是NoSQL NoSQL数据库意即:Not Only SQL 不仅仅是SQL,它区别于传统的关系型数据库,储存方式按照的是key-value的形式存储数据,这个我们可以联想到我们以前学过的Hash ...

  9. Linux下redis的安装

    原文出处:http://www.cnblogs.com/_popc/p/3684835.html 第一步:redis的安装 希望将redis安装到此目录 1 /usr/local/redis 希望将安 ...

最新文章

  1. CodeProject 文章概览:ASP.NET 模板相关内容
  2. tensorflow 线性回归 iris
  3. Linux正确的关机方式
  4. pyqt5项目(计算器)
  5. 微信团队分享:微信移动端的全文检索多音字问题解决方案
  6. 2020-2021年中国购物中心消费者洞察报告
  7. 老年机按键串号_为什么老人机依然很多人在用?
  8. heartbeat+iscsi+mysql实现双机高可用
  9. useradd: cannot open /etc/passwd解决办法记录
  10. python pow函数用法_Python代码中pow()函数具有哪些功能呢?
  11. 静态文件之static+url控制系统(萌新笔记)
  12. java案例代码8--最终要随机输出一组出来做为排名
  13. php while循环语句格式,PHP while 循环
  14. 典型关联分析(CCA)原理总结
  15. 一张图掌握产品经理绩效考核表实例
  16. 抖音收购musical.ly后,最难过的为什么是快手?
  17. T10 微信公众号如何获得清晰头像?
  18. 精囊妙计 -- 策略模式(Strategy Pattern) 介绍 优缺点 使用场景案例及代码演示
  19. unity绘制管道_在Unity里写一个纯手动的渲染管线(一)
  20. 【DIRECTX状态详解】

热门文章

  1. python发送excel文件_如何在Python中使用Excel文件(xlsx)附件发送电子邮件
  2. java毕业设计迅腾游戏交流网站Mybatis+系统+数据库+调试部署
  3. html文本环绕’,css如何使文字环绕显示
  4. python 波动率锥_50ETF波动率的统计属性及其对波动率交易策略的启示
  5. 语音合成论文优选:语音合成综述(2021)
  6. swiper插件在ie浏览器无反应,解决办法
  7. 极光笔记 | 用 WhatsApp 进行海外用户运营的 N 个理由
  8. Ikea与Ori Living连手将打造机器人家具系统
  9. HNU实验五05阿迪看医生
  10. eclipse插件安装方法备忘