Redis相关操作

科技资讯 投稿 12600 0 评论

Redis相关操作

Redis相关文档

一. Redis简单使用

1.安装redis

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

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

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

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

    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 密码   # 如果有密码可以这样来登录, 如果没有.不用这一步

2.redis常见数据类型

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

命令 key 参数

    字符串(它自己认为是字符串, 我认为是任何东西. , 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
    
  1. 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
    
  2. 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
    
  3. 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个
    
    
  4. zset

    常用操作

    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

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相关操作

赞同 (62) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽