Redis数据库学习笔记

一、Redis常用数据类型

  • 字符串类型

String类型最大可以存储512M数据

语法结构:

添加:SET key value

           SETEX key 5 value 设置5秒后过期(消失)

           PSETEX key 5 value 设置5毫秒后过期

           MSET key value key value 设置多个值

           APPEND key value 在字符串后追加值

获取:GET key 

           GETRANGE  key 0 1 截取字符串内容

           STRLEN key 获取字符串长度

           GET key key 获取多个值

删除:DEL email 

修改:INCR num 数字自增1

           INCRBY num 25 数字增加25

           INCRBYFLOAT num 3.5 数字增加浮点数3.5

           DECR num 数字自减1

           DECRBY num 25 数字减少25

           浮点数没有减少,可以增加负的浮点数

  • 哈希类型

当我们觉得VALUE需要保存更复杂的结构化数据,这时候可以使用哈希类型语法结构:

添加:HSET 8000 key value

           HMSET 8000 key value key value 设置多个字段

获取:HGET 8000 key 获取字段

           HMGET 8000 key key key 获取多个字段

           HGETALL 8000 获取所有字段值

           HKEYS 8000 获取所有字段名

           HLEN 8000 获取字段数量

           HEXISTS 8000 key 判断是否存在这个字段

           HVALS 8000 获取所有字段值

删除:HDEL 8000 key value

修改:HINCRBY 8000 key 10 让这个字段值加上指定的整数

           HINCRBYFLOAT 8000 key 3.5 让这个字段值加上指定的浮点数

  • 列表类型

当我们需要向VALUE保存序列化的数据,可以使用列表类型:

添加:RPUSH key value value value 表的右侧追加

           LPUSH key value value 表的左侧追加

           LINSERT key BEFORE/AFTER value1 value2 在value1的前/后插入value2 

获取:LRANGE key 0 -1 输出所有元素,-1表示表的末尾

           LLEN key 获得表的长度

           LINDEX key index 获得表的元素

删除:LPOP key 删除表的最左边的元素

           RPOP key 删除表的最右边的元素

           LREM key 2 value 删除表中2个value值

修改:LSET key index value 根据索引序号修改值

  • 集合类型

添加:SADD key value value 

获取:SMEMBERS key 获得集合所有元素

           SCARD key 获得集合长度

           SISMEMBER key value 判断是否含有某个元素

           SRANDMEMBER key 3 随机返回3个集合中的元素

删除:SREM key value value 

           SPOP key  随机删除并返回集合的某个元素

  • 有序集合类型

有序集合是带有排序功能的集合,Redis会按照元素分数值排序

分数值一致时,数据排序顺序按照哈希算法排序

元素值必须用双引号包裹

添加:ZADD key 0 "value" 0 "value" 添加数据,0是分数值

获取:ZREVRANGE key 0 -1 获得有序集合的降序结果

           ZRANGE key 0 -1 获得有序集合的升序结果

           ZCARD key 获得有序集合长度

           ZCOUNT key 5 10 获得分数值在5~10之间的元素数量,两个值都包括

           ZSCORE key "value" 获得元素的分数值

           ZRANGEBYSCORE key 5 10 获得分数值在5~10之间的升序元素结果,两个值都包括

           ZRANGEBYSCORE key 5 (10 获得分数值在5~10之间的升序元素结果,不包括10

           ZRANGEBYSCORE key -inf +inf 获得负无穷到正无穷的升序元素结果。

           ZREVRANGEBYSCORE key 10 5 获得分数值在5~10之间的降序元素结果。

           ZRANK key "value" 获得这个元素的升序排名,从0开始

           ZREVRANK key "value" 获得这个元素的降序排名,从0开始

删除:ZREM key "value" , "value"

           ZREMRANGEBYRANK key 0 2 删除排名区间内的元素,按照排名删除

           ZREMRANGEBYSCORE key -inf (5000 删除分数值区间内的元素

修改:ZINCRBY key 5 "value" 对分数值进行加法+=运算

二、操作key的常用指令

  • 库切换:SELECT 1
  • 删除记录:DEL keyword
  • 判断是否存在某个key:EXISTS employee
  • 设置记录过期时间:EXPIRE employee 5
  • 设置记录的过期时间(UNIX时间戳):EXPIREAT employee 1722141530
  • 把记录迁移到其他逻辑库:MOVE keyword 1
  • 修改Key名称:RENAME employee emp
  • 移除过期时间:PERSIST emp
  • 判断VALUE数据类型:TYPE emp

三、Redis事务

Redis是异步单线程执行,也就是一个线程对应所有的客户端。哪个客户端上传了命令,线程就会执行,所以并 不能保证一个客户端的多个命令,不会被其他客户端的命令插队

跟MySQL有一些区别,它满足MySQL特性中的一致性,隔离性,不满足MySQL的原子性,持久性。

为了保证事务的一致性,在开启事务之前必须要用WATCH命令监视要操作的记录。

监视目标被其他线程修改,则自动关闭:WATCH key key

开启事务:

MULTI

INCR kill_num

RPUSH kill_user 9502

EXEC

取消事务:DISCARD 取消事务

关于Redis的所有命令可以在官网中找到Redis 命令参考icon-default.png?t=O83Ahttp://doc.redisfans.com/index.html

四、Redis与Python的交互

在pycharm控制台中安装模块,输入:pip3 install redis -i https://pypi.tuna.tsinghua.edu.cn/simple some-package

1、创建连接对象

import redis

r = redis.Redis(

        host=”localhost”,

        port=6379,

        db=0

)

2、创建连接池对象

import redis

try:

        pool  = redis.ConnectionPool(

                host=”localhost”,

                port=6379,

                db=0,

                max_connections=20 连接池的数量

        )

except Exception as e:

        print(e)

3、关闭连接

del r

4、封装连接池

放到一个python文件中,以便于后续调用,这里命名为redis_db为例

5、操作Redis

  • 操作字符串

from redis_db import pool

import redis

conn=redis.Redis(

        connection_pool=pool

)

conn.mset({"country":"china","city":"shenyang"})

result=conn.mget("country","city")

for i in result:

        print(i)

del conn

  • 操作列表

from redis_db import pool

import redis

conn=redis.Redis(

        connection_pool=pool

)

conn.rpush("country","china","Japan","Germany")

conn.lpop("country")

result=conn.lrange("country",0,-1)

for i in result:

        print(i)

del conn

  • 操作集合

from redis_db import pool

import redis

conn=redis.Redis(

        connection_pool=pool

)

conn.sadd("number",100,200,300)

conn.srem("number",200)

result=conn.smembers("number")

for i in result:

        print(i)

del conn

  • 操作有序集合

from redis_db import pool

import redis

conn=redis.Redis(

        connection_pool=pool

)

conn.zadd("keyword",{"张三":0,"李四":0})

conn.zincrby("keyword",10,"张三")

result=conn.zrevrange("keyword",0,-1)

for i in result:

        print(i.decode("utf-8"))

del conn

  • 操作哈希表

from redis_db import pool

import redis

conn=redis.Redis(

        connection_pool=pool

)

conn.hset("1111","country","china")

conn.hset("1111","age","35")

conn.hset("1111","sex","male")

conn.hdel("1111","age")

result=conn.hexists("1111","sex")

print(result)

result= conn.hgetall("1111")

for i in result:

        print(i.decode("utf-8"),result[i].decode("utf-8"))

del conn

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值