Redis简单使用

一. Redis的安装

Redis作为一款目前这个星球上性能最高的非关系型数据库之一. 拥有每秒近十万次的读写能力. 其实力只能用恐怖来形容.

mac版本, brew:

https://blog.csdn.net/weixin_45509705/article/details/119242390

windows版本:

  1. 安装redis

    Redis是我见过这个星球上最好安装的软件了. 比起前面的那一坨. 它简直了...

    直接把压缩包解压. 然后配置一下环境变量就可以了.

    接下来, 在环境变量中将该文件夹配置到path中.

    win7的同学自求多福吧...

    我们给redis多配置几个东西(修改redis的配置文件, mac是: redis.conf, windows是: redis.windows-service.conf)

    1. 关闭bind

      # bind 127.0.0.1 ::1  # 注释掉它
    2. 关闭保护模式 windows不用设置

      protected-mode no    # 设置为no
    3. 设置密码

      requirepass 123456   # 设置密码

    将redis怼到windows服务必须进入到redis目录后才可以

    # 将redis安装到windows服务
    redis-server.exe --service-install redis.windows.conf --loglevel verbose
    # 卸载服务:
    redis-server --service-uninstall
    # 开启服务:
    redis-server --service-start
    # 停止服务:
    redis-server --service-stop

    mac的同学, 每次启动需要输入以下命令

    redis-server /usr/local/etc/redis.conf

    使用redis-cli链接redis

    redis-cli -h ip地址 -p 端口 --raw   # raw可以让redis显示出中文(windows无效)
    auth 密码   # 如果有密码可以这样来登录, 如果没有.不用这一步

    附赠RDM, redis desktop manager. 可以帮我们完成redis数据库的可视化操作(需要就装, 不需要就算, windows建议安装)

  2. redis常见数据类型

    整个redis的数据库(0)可以看做一个超大号的大字典. 想要区分不同的系统. 可以在key上做文章.

    redis中常见的数据类型有5个.

    命令规则: 命令 key 参数

    1. string

      字符串(它自己认为是字符串, 我认为是任何东西. ), redis最基础的数据类型.

      常用命令

      set key value  # 添加一条数据
      get key   # 查看一条数据
      incr key       # 让该key对应的数据自增1(原子性, 安全)
      incrby key count     # 让该key对应的value自增 count
      type key # 查看数据类型(set进去的东西一律全是字符串)

      例如

      set name zhangsan  # 添加数据  name = zhangsan
      get name # 查看数据 zhangsan

      set age 10
      get age # 10
      incr age # 11
      get age # 11
      incrby age 5 # 16
    2. hash

      哈希, 相当于字典.

      常见操作

      hset key k1 v1   # 将k1, v1存储在key上
      hget key k1 # 将key上的k1提取出来
      hmset key k1 v1 k2 v2 k3 v3.... # 一次性将多个k,v存储在key
      hmget key k1 k2....# 一次性将key中的k1, k2...提取出来
      hgetall key # 一次性将key中所有内容全部提取
      hkeys key # 将key中所有的k全部提取
      hvals key # 将key中所有的v全部提取

      示例:

      HMSET stu id 1 name sylar age 18
      HMGET stu name age # syalr 18
      HGETALL stu # id 1 name sylar age 18
      HKEYS stu # id name age
      HVALS stu # 1 syalr 18
    3. list

      列表, 底层是一个双向链表. 可以从左边和右边进行插入. 记住每次插入都要记得这货是个双向链表

      常见操作

      LPUSH key 数据1 数据2 数据3.... # 从左边插入数据
      RPUSH key 数据1 数据2 数据3.... # 从右边插入数据
      LRANGE key start stop # 从start到stop提取数据.

      LLEN key # 返回key对应列表的长度
      LPOP key # 从左边删除一个.并返回被删除元素
      RPOP key # 从右边删除一个.并返回被删除元素

      示例:

      LPUSH banji yiban erban sanban siban
      LRANGE banji 0 -1 # yiban erban sanban siban
      RPUSH ban ban1 ban2 ban3
      LRANGE ban 0 -1 # ban1 ban2 ban3
      LPOP ban # ban1
      LLEN key # 2
    4. set

      set是无序的超大集合. 无序, 不重复.

      常见操作

      SADD key 值   # 向集合内存入数据
      SMEMBERS key # 查看集合内所有元素
      SCARD key # 查看key中元素的个数
      SISMEMBER key val # 查看key中是否包含val
      SUNION key1 key2 # 并集
      SDIFF key1 key2 # 差集合, 在key1中, 但不在key2中的数据
      SINTER key1 key2 # 计算交集, 在key1和key2中都出现了的
      SPOP key # 随机从key中删除一个数据
      SRANDMEMBER key count # 随机从key中查询count个数据

      实例:

      SADD stars 柯震东 吴亦凡 张默 房祖名   # 4
      SADD stars 吴亦凡 # 0. 重复的数据是存储不进去的.
      SMEMBERS stars # 柯震东 吴亦凡 张默 房祖名
      SISMEMBER stars 吴亦凡 # 吴亦凡在 stars里么? 1 在 0 不在

      SADD my 周杰伦 吴亦凡 房祖名
      SINTER stars my # 计算交集 吴亦凡 房祖名

      SPOP my # 随机删除一个
      SRANDMEMEBER my 2 # 从集合总随机查看2个
    5. zset

      有序集合, 有序集合中的内容也是不可以重复的. 并且存储的数据也是redis最基础的string数据. 但是在存储数据的同时还增加了一个score. 表示分值. redis就是通过这个score作为排序的规则的.

      常用操作

      ZADD key s1 m1 s2 m2 ... # 向key中存入 m1 m2 分数分别为s1 s2
      ZRANGE key start stop [withscores] # 查看从start 到stop中的所有数据 [是否要分数]
      ZREVRANGE key start stop # 倒叙查看start到stop的数据
      ZCARD key # 查看zset的数据个数
      ZCOUNT key min max # 查看分数在min和max之间的数据量
      ZINCRBY key score member # 将key中member的分值score
      ZSCORE key m # 查看key中m的分值

示例:

     ZADD fam 1 sylar 2 alex 3 tory  # 添加三个数据
ZRANGE fam 0 -1 WITHSCORES # 正序查看
ZREVRANGE fam 0 -1 WITHSCORES # 倒叙查看
ZINCRBY fam 10 alex # 给alex加10分
ZADD fam 100 alex # 给alex修改分数为100分
ZSCORE fam alex # 查看alex的分数
ZCARD fam # 查看fam的数据个数

redis还有非常非常多的操作. 我们就不一一列举了. 各位可以在网络上找到非常多的资料. 各位大佬们注意. 数据保存完一定要save一下, 避免数据没有写入硬盘而产生的数据丢失

二. python搞定redis

python处理redis使用专用的redis模块. 同样的, 它也是一个第三方库.

pip install redis

获取连接(1)

from redis import Redis

red = Redis(host="127.0.0.1", # 地址
port=6379, # 端口
db=0, # 数据库
password=123456, # 密码
decode_responses=True) # 是否自动解码

获取连接(2)

pool = redis.ConnectionPool(
host="127.0.0.1", # 地址
port=6379, # 端口
db=0, # 数据库
password=123456, # 密码
decode_responses=True
)

r = redis.Redis(connection_pool=pool)
print(r.keys())

我们以一个免费代理IP池能用到的操作来尝试一下redis

# 存入数据
red.set("sylar", "邱彦涛")
# 获取数据
print(red.get("sylar"))

lst = ["张三丰", "张无忌", "张翠山", "张娜拉"]
red.lpush("names", *lst) # 将所有的名字都存入names

# # 查询所有数据
result = red.lrange("names", 0, -1)
print(result)

# 从上面的操作上可以看出. python中的redis和redis-cli中的操作是几乎一样的

# 接下来, 咱们站在一个代理IP池的角度来分析各个功能
# 抓取到了IP. 保存入库
red.zadd("proxy", {"192.168.1.1": 10, "192.168.1.2": 10})
red.zadd("proxy", {"192.168.1.3": 10, "192.168.1.6": 10})
red.zadd("proxy", {"192.168.1.4": 10, "192.168.1.7": 10})
red.zadd("proxy", {"192.168.1.5": 10, "192.168.1.8": 10})

# 给某一个ip增加到100分
red.zadd("proxy", {"192.168.1.4": 100})

# 给"192.168.1.4" 扣10分
red.zincrby("proxy", -10, "192.168.1.4")

# 分扣没了. 删除掉它
red.zrem("proxy", "192.168.1.4")

# 可用的代理数量
c = red.zcard("proxy")
print(c)
# 根据分值进行查询(0~100)之间
r = red.zrangebyscore("proxy", 0, 100)
print(r)

# 查询前100个数据(分页查询)
r = red.zrevrange('proxy', 0, 100)

# 判断proxy是否存在, 如果是None就是不存在
r = red.zscore("proxy", "192.168.1.4")
print(r)
 

redis(二)的更多相关文章

  1. 分布式数据存储 之 Redis(二) —— spring中的缓存抽象

    分布式数据存储 之 Redis(二) -- spring中的缓存抽象 一.spring boot 中的 StringRedisTemplate 1.StringRedisTemplate Demo 第 ...

  2. 深入理解MVC C#+HtmlAgilityPack+Dapper走一波爬虫 StackExchange.Redis 二次封装 C# WPF 用MediaElement控件实现视频循环播放 net 异步与同步

    深入理解MVC   MVC无人不知,可很多程序员对MVC的概念的理解似乎有误,换言之他们一直在错用MVC,尽管即使如此软件也能被写出来,然而软件内部代码的组织方式却是不科学的,这会影响到软件的可维护性 ...

  3. Redis(二十一):Redis性能问题排查解决手册(转)

    性能相关的数据指标 通过Redis-cli命令行界面访问到Redis服务器,然后使用info命令获取所有与Redis服务相关的信息.通过这些信息来分析文章后面提到的一些性能指标. info命令输出的数 ...

  4. Linux-NoSQL之Redis(二)

    一.Redis配置文件详解 1.通用配置 daemonize no  # 默认情况下,redis并不是以daemon形式来运行的.通过daemonize配置项可以控制redis的运行形式 pidfil ...

  5. Redis(二)、Redis持久化RDB和AOF

    一.Redis两种持久化方式 对Redis而言,其数据是保存在内存中的,一旦机器宕机,内存中的数据会丢失,因此需要将数据异步持久化到硬盘中保存.这样,即使机器宕机,数据能从硬盘中恢复. 常见的数据持久 ...

  6. .NET中使用Redis (二)

    很久以前写了一篇文章 .NET中使用Redis 介绍了如何安装Redis服务端,以及如何在.NET中调用Redis读取数据.本文简单介绍如何设计NoSQL数据库,以及如何使用Redis来存储对象. 和 ...

  7. 转:.NET中使用Redis (二)

    原文来自于:http://blog.jobbole.com/83824/ 原文出处: 寒江独钓   欢迎分享原创到伯乐头条 很久以前写了一篇文章 .NET中使用Redis 介绍了如何安装Redis服务 ...

  8. redis(二)redis+TCMALLOC高性能的缓存服务器的安装配置

    安装  1准备编译环境    yum -y install gcc gcc+ gcc-c++ openssl openssl-devel pcre pcre-devel  2 下载源码包(由于goog ...

  9. StackExchange.Redis 二次封装

    在NuGet直接搜索StackExchange.Redis,下载引用包: 帮助类: public class RedisUtils { /// <summary> /// redis配置文 ...

  10. 高可用Redis(二):字符串类型

    1.Redis字符串结构 对于Redis来说,所有的key都是字符串,其value可以是string,list,hash,set,zset 比如下面的 键值对的value还可以更加复杂,比如可以是js ...

随机推荐

  1. Python抖音视频去水印,并打包成exe可执行文件

    前言 抖音里面的视频保存之后,会发现全都带有水印,所以如何解决视频去除水印就很有必要,所以教程来了,本次教程不仅会教大家如何去除视频里的水印,并且教大家将程序制作成exe可执行文件,可以发给你的好友使 ...

  2. 『现学现忘』Git后悔药 — 32、revert撤销(一)

    目录 1.Git的三种后悔药 2.revert命令原理 3.revert命令的使用 (1)移除某次提交的修改 (2)revert命令说明 1.Git的三种后悔药 在Git中后悔药有三种:amend.r ...

  3. 知识图谱顶会论文(ACL-2022) PKGC:预训练模型是否有利于KGC?可靠的评估和合理的方法

    PKGC:预训练模型是否有利于KGC?可靠的评估和合理的方法 论文地址:Do Pre-trained Models Benefit Knowledge Graph Completion? A Reli ...

  4. 京东云开发者|关于“React 和 Vue 该用哪个”我真的栓Q

    一.前言:我全都要 面对当今前端界两座大山一样的主流框架,React和Vue,相信很多小伙伴都或多或少都产生过这样疑问,而这样的问题也往往很让人头疼和犹豫不决: 业务场景中是不是团队用什么我就用什么? ...

  5. Python处理刚刚,分钟,小时,天前等时间

    简介 用爬虫获取目标网站数据后可能会遇见时间为处理刚刚,分钟,小时,天前等时间格式,如图 解决问题: 写了一个工具类来处理该问题,其中封装了两个函数 1. 将时间中的中文数字转换成阿拉伯数字 def ...

  6. Redis系列9:Geo 类型赋能亿级地图位置计算

    Redis系列1:深刻理解高性能Redis的本质 Redis系列2:数据持久化提高可用性 Redis系列3:高可用之主从架构 Redis系列4:高可用之Sentinel(哨兵模式) Redis系列5: ...

  7. 记录一次Oracle导入数据库失败的解决办法,最终报错:UDI-04045、ORA-04045、ORA-01775

    费了很大的工夫,终于解决了.做个记录. ******************************************************************************** ...

  8. KatalonRecorder系列(一):基本使用+XPath元素定位

    一.简介 Katalon Recorder是基于selenium的浏览器插件,支持火狐和chrome.可以录制web上的操作并回放,还能导入导出脚本. 二.安装 可在谷歌商店或者火狐附件组件中搜索并选 ...

  9. 最新的ZooKeeper GUI

    Zookeeper 是一个分布式的.开源的程序协调服务,是 hadoop 项目下的一个子项目.他提供的主要功 能包括:配置管理.名字服务.分布式锁.集群管理. 平时用zkCli.sh进行管理不免有点不 ...

  10. Django更换数据库和迁移数据方案

    前言 双十一光顾着买东西都没怎么写文章,现在笔记里还有十几篇半成品文章没写完- 今天来分享一下 Django 项目切换数据库和迁移数据的方案,网络上找到的文章方法不一,且使用中容易遇到各类报错,本文根 ...