python:操作数据库之Redis

Redis的使用和常用数据类型

redis:单线程+异步IO

官网:https://redis.io/

http://redisdoc.com/

redis默认端口号:6379

yum安装版本较低

利用源码安装

redis-server --requirepass 123456 &>redis.log &     #客户端操作需要口令验证


Linux安装Redis步骤和make遇到的坑 解决方案

redis安装过程中make遇到的问题如下:

解决办法:

[root@localhost redis-6.0.1]# gcc -v                             # 查看gcc版本
[root@localhost redis-6.0.1]# yum -y install centos-release-scl  # 升级到9.1版本
[root@localhost redis-6.0.1]# yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
[root@localhost redis-6.0.1]# scl enable devtoolset-9 bash
以上为临时启用,如果要长期使用gcc 9.1的话:
[root@localhost redis-6.0.1]# echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile

再次执行:make install PREFIX=/usr/local/redis

安装成功会出现:Hint: It's a good idea to run 'make test' 

执行make test 进行测试,如果出现如下错误:

解决方法:

[root@localhost redis-6.0.1]# yum install tcl
[root@localhost redis-6.0.1]# make test

linux知识回顾:

查看后台进程:jobs

把后台进程拿到前台:fg %1


远程连接:

redis-cli -h 10.10.10.130 -p 6379

输入命令:auth 密码,之后才可以使用

redis基于内存

set key value

get key

EX:有效期,通常用于验证码

ttl key:查看键值还能存在的剩余时间

命令:redis-benchmark      #redis性能基准测试


键值对保存:

save

后台保存:bgsave

查看所有键:keys *


TYPE key

返回 key 所储存的值的类型。

返回值

  • none (key不存在)

  • string (字符串)

  • list (列表)

  • set (集合)

  • zset (有序集)

  • hash (哈希表)

  • stream (流)

SELECT index

切换到指定的数据库,数据库索引号 index 用数字值指定,以 0 作为起始索引值。

默认使用 0 号数据库。

返回值

OK

代码示例

redis> SET db_number 0         # 默认使用 0 号数据库
OK

redis> SELECT 1                # 使用 1 号数据库
OK

redis[1]> GET db_number        # 已经切换到 1 号数据库,注意 Redis 现在的命令提示符多了个 [1]
(nil)

redis[1]> SET db_number 1
OK

redis[1]> GET db_number
"1"

redis[1]> SELECT 3             # 再切换到 3 号数据库
OK

redis[3]>                      # 提示符从 [1] 改变成了 [3]

FLUSHDB

清空当前数据库中的所有 key。

此命令从不失败。

返回值

总是返回 OK

代码示例

redis> DBSIZE    # 清空前的 key 数量
(integer) 4

redis> FLUSHDB
OK

redis> DBSIZE    # 清空后的 key 数量
(integer) 0

HSET hash field value

可用版本: >= 2.0.0

时间复杂度: O(1)

将哈希表 hash 中域 field 的值设置为 value

如果给定的哈希表并不存在, 那么一个新的哈希表将被创建并执行 HSET 操作。

如果域 field 已经存在于哈希表中, 那么它的旧值将被新值 value 覆盖。

返回值

HSET 命令在哈希表中新创建 field 域并成功为它设置值时, 命令返回 1 ; 如果域 field 已经存在于哈希表, 并且 HSET 命令成功使用新值覆盖了它的旧值, 那么命令返回 0

代码示例

设置一个新域:

redis> HSET website google "www.g.cn"
(integer) 1

redis> HGET website google
"www.g.cn"

对一个已存在的域进行更新:

redis> HSET website google "www.google.com"
(integer) 0

redis> HGET website google
"www.google.com"

利用python进行哈希校验:

hashlib包

利用迭代器优化上述代码:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值