东方耀AI技术分享

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 3012|回复: 2
打印 上一主题 下一主题

[课堂笔记] Ubuntu18.04 安装Redis服务端和客户端

[复制链接]

1365

主题

1856

帖子

1万

积分

管理员

Rank: 10Rank: 10Rank: 10

积分
14437
QQ
跳转到指定楼层
楼主
发表于 2020-5-18 17:59:53 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
Ubuntu18.04 安装Redis服务端和客户端








Redis 使用
Redis=Remote DIctionary Server,是一个由 Salvatore Sanfilippo 写的高性能的key-value存储系统。
Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存亦可持久化的
日执行、key-value 数据库,并提供多种语言的 API。


Redis支持存储的类型有string, list, set, zset和hash,在处理大规模数据读写的场景下运用比较多


REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。


Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。


它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。








Redis是常用基于内存的Key-Value数据库,比Memcache更先进,支持多种数据结构,高效,快速。用Redis可以很轻松解决高并发的数据访问问题




sudo apt-get update
sudo apt-get install redis-server


设置密码
sudo vim /etc/redis/redis.conf
找到# requirepass foobared这一行(大概在500行),将注释符号#去掉,将后面修改成自己的密码,例如,设置密码为123456
requirepass 123456  
看到 默认端口port=6379




开启远程访问
默认情况下,Redis服务器不允许远程访问,只允许本机访问,所以我们需要设置打开远程访问的功能
sudo vim /etc/redis/redis.conf
使用注释符号#注释bind 127.0.0.1这行(在第69行)




Redis服务控制
sudo systemctl start redis        #启动
sudo systemctl stop redis        #关闭
sudo systemctl restart redis        #重启

sudo systemctl status redis    # 服务的状态





连接测试
直接输入redis-cli通过默认客户端来测试连接,正常情况下返回ping的对应值PONG






NOAUTH Authentication required的解决:
输入密码即可解决 auth 123456 (123456是redis的密码)



python客户端代码:
  1. # -*- coding: utf-8 -*-
  2. __author__ = u'东方耀 微信:dfy_88888'
  3. __date__ = '2020/5/18 下午5:26'
  4. __product__ = 'PyCharm'
  5. __filename__ = 'redis_demo'

  6. # python需要安装redis的客户端
  7. # pip3 install redis
  8. # Successfully installed redis-3.5.2


  9. # 1. 导入redis
  10. from redis import StrictRedis

  11. # 2. 连接数据库,指定host,端口号,数据库
  12. r = StrictRedis(host="localhost", port=6379, db=2, password="123456")

  13. # 3. 存储到redis中
  14. r.set('test1', 'value1')  # 单个数据存储
  15. r.set('test2', 'value2')

  16. # 4. 从redis中获取值
  17. print(r.get('test1'))

  18. # 5. 批量操作
  19. dict0 = {'k1': 'v1', 'k2': 'v2'}
  20. r.mset(dict0)
  21. print(r.mget('k1', 'k2'))

  22. # 虽然有set和get操作,但是一个一个的操作终究还是麻烦,所以,我们还有mset和mget命令
  23. #
  24. # python在进行mset操作时,只需要传入一个dict即可,进行mget操作,则传入一个list
  25. keydict = {}
  26. keydict['key1'] = 324
  27. keydict['key2'] = 'ag'
  28. print(r.mset(keydict))
  29. list = ['key1', 'key2']
  30. print(r.mget(list))
复制代码





# Redis 存储数组
# Redis 是不可以直接存储数组的,如果直接存储数组类型的数值,则报错
# 如下,存入 numpy 数组类型,会报错:
# redis.exceptions.DataError: Invalid input of type: 'ndarray'. Convert to a bytes, string, int or float first

# 在存储数组之前将其序列化,获取数组的时候将其反序列化即可。
# 借助于 python 的pickle模块进行序列化操作


  1. import numpy as np
  2. from redis import StrictRedis
  3. import pickle

  4. r = StrictRedis(host="localhost", port = 6379, db = 2, password=123456)
  5. x1 = np.array(([0.2, 0.1, 0.6], [10.2, 4.2, 0.9]))
  6. # print(r.set('test1', x1))  直接这样会报错
  7. print(r.set("test1", pickle.dumps(x1)))

  8. print(pickle.loads(r.get('test1')))

  9. print(type(r.get('test1')))
  10. # 获取后的数据类型
  11. print(type(pickle.loads(r.get("test1"))))
  12. # 这样,就可以保持数据存入前和取出后的类型一致

复制代码






redis.png (20.55 KB, 下载次数: 113)

redis.png

redis_status.png (74.47 KB, 下载次数: 116)

redis_status.png
让天下人人学会人工智能!人工智能的前景一片大好!
回复

使用道具 举报

1365

主题

1856

帖子

1万

积分

管理员

Rank: 10Rank: 10Rank: 10

积分
14437
QQ
沙发
 楼主| 发表于 2020-5-18 18:01:06 | 只看该作者
注意
修改配置文件之后需要重启Redis服务
让天下人人学会人工智能!人工智能的前景一片大好!
回复

使用道具 举报

1365

主题

1856

帖子

1万

积分

管理员

Rank: 10Rank: 10Rank: 10

积分
14437
QQ
板凳
 楼主| 发表于 2020-5-26 09:20:27 | 只看该作者
flushdb:删除当前选择的数据库中的所有key;

flushall:删除所有数据库中的所有key;
让天下人人学会人工智能!人工智能的前景一片大好!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|人工智能工程师的摇篮 ( 湘ICP备2020019608号-1 )

GMT+8, 2024-5-3 14:45 , Processed in 0.183464 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表