zoukankan      html  css  js  c++  java
  • redis数据库的常用操作(python如何连接)

    redis中文 官网:www.redis.com

    redis英文官网:www.redis.io

    redis是一个非关系型数据库 

    redis自带反垃圾系统,就是导入数据的时候不用考虑数据的重复性,直接往redis中导入即可,会自动去重

    redis作用:

    1、内存缓存,将常用的数据放到redis中

    通常服务器前面都会放一个缓存数据库,常用的cache、redis、memcache,首先缓存数据库从mysql中获取常用的数据,然后用户访问的时候就从缓存数据库去匹配数据,达到减轻后端mysql服务器的压力

    2、消息中间件

    也可以作为生产者消费者模型,就是生产者将数据放到redis中,然后消费者从redis中取数据

    关于redis的数据库

    默认选择的是0号数据库,redis总共有16个数据库

    查看数据库,vim redis.conf 中 databases 16  # 就是告诉你总共有16个数据库

    the default databases is DB 0 #就是告诉你在0号数据库

    select num  # num就是0~16的任意数字,切换到指定的数据库

    keys * # 查看当前数据库下所有的数据

    move key db  # 就是把当前数据库下的指定的数据移动到指定的数据库下,key就是当前数据库下数据列表的名字,db就是0~16数据库的一个数字

    linux下的安装

    wget http://download.redis.io/releases/redis-5.0.4.tar.gz
    mkdir redis # 创建一个redis的安装目录文件夹
    cd redis # 进入安装目录
    mv ../redis-5.0.4.tar.gz . # ..就是当前目录的上级目录,.就是当前目录,将上级目录的软件包复制到当前目录 tar xzf redis-5.0.4.tar.gz #解压安装包 cd redis-5.0.4 # 进入解压的文件夹 make # 编译
    make install # 编译安装
    src/redis-server # 启动服务(src/redis-server & 加了&就是后台执行,不会占用命令窗口)
    ps aux | grep redis # 查看后台redis的端口号和进程号
    src/redis-cli # 连接redis

    安装后再src包下的一些文件用处

    redis-server # 启动redis服务,默认端口6379,PID就是进程号

    redis-cli # 连接redis服务的客户端工具

    redis-check-rdb # 数据持久化的工具,就是数据落地的工具,同步到磁盘上,rdb是一种落地方式

    redis-check-aof # 数据持久化的工具,就是数据落地的工具,同步到磁盘上,aof是另一种落地方式

    redis-benchmark # redis压力测试工具

    redis-sentinel #  哨兵机制,监控定位的作用,实际项目中会有多台redis,为什么有多台redis,就是如果一台挂了,其他的可以继续用,sentinel就是监控所有的redis,如果有一台挂了,那么sentinel就会把服务切换到另外的几台redis上

    支持的数据结构有5种 # 重点面试题

    1、字符串(strings)

    2、链表(lists)

    3、集合(sets)

    4、有序集合(order set)

    5、hash (列表)

    字符串的操作

    1、set key value ex(px) # 设置单个数据下的值超时时间,key就是设置的对象如name,value就是key下的值,ex是超时时间以秒为单位,px也是超时时间以毫秒为单位

    2、get key # 获取值

    3、MSET key value key value # 设置多个值,MSET后面可以跟多个key和value

    4、mget key1 key2 key3 # 获取多个key值,mget后面可以跟多个key来取值

    5、getset key value  # 先获取当前的key值并返回,然后将后面的value赋值给当前的key,也就是更新当前key的值

    6、incr key # key自增加1,应用场景登录时候输入次数限制,达到错误限制次数则10分钟后再登录,在redis里面同incr就可以实现

    7、incrby key 10  # 在incr key的基础上增加数字

    8、incrbyfloat key 10.4 # 在incr key的基础上增加浮点数 

    9、decr key  # incr key 自减1,如果key是浮点数float则会报错,必须set num 回整型才能自减

    10、decrby key num # 在incr key 的基础上减指定数字

    链表操作

    1、lpush key value  # 从链表的左边去添加值,key就是链表名,value就是链表值可以是多个

    2、lrange key start stop # 返回链表名中的值,start就是开始,stop就是结束,0 -1就是查看所有的值

    3、llen key # 查看链表的长度

    4、lindex key index # 返回链表名索引位的值,key就是链表名,index就是数字索引的位置

    5、linsert key after value value # 在指定的链表的值的后面添加值,key就是链表名,value就是链表名下指定的值,value就是要插入的值

    6、insert key before value value # 在指定的链表的值的前面添加值,key就是链表名,value就是链表名下指定的值,value就是要插入的值

    集合的操作

    这个集合如果是是一个社交网络就很有用,效率高

    1、sadd key value... # 添加一个集合 ,key就是集合名,value就是集合中的元素,key后面可以跟多个value

    2、smembers key # 查看集合中所有的成员,key就是集合名

    3、sismember key value # 查看成员是否在集合中,key就是集合名,value就是查看的成员名

    4、spop key  # 弹出集合中的值,key就是集合名

    5、scard key # 判断集合的长度,key就是集合名

    6、sinter key1 key2 # 求两个集合的交集,key就是集合名

    7、sunio key1 key2 key3  # 求多个集合的并集

    8、sdiff key1 key2 # 求集合的差集

    有序集合 order set

    1、zadd key nx value...  # 给集合设置一个数值,可以根据数值的大小给元素进行排序

    2、zrank key value # 查看集合中指定值得排名

    3、zrange key 0 -1 # 对指定的集合进行排序

    4、zrange key 0 -1 withscores  # 把集合的值包括数值全部打印出来

    5、zcard key # 返回集合中的元素

    6、zcount key min max # 查看指定集合中数值区间的值得数量,min最小的数值,max最大的数值

    hash数据结构

    1、hset key field value # key就是一个列表名字,field就是列表中的key,value就是值,将key和value组成了一个json格式的数据结构 info = {‘key’:'value,'key':'value'}

    2、hget key field # 查看指定列表名的指定key的值

    3、hgetall key # 获取指定列表名中所有的field和value

    4、hdel key field # 删除指定列表中的key

    5、hlen key # 返回指定列表的长度,有多少个值

    6、hexists key field # 判断指定列表中有没有指定的key

    7、hkeys key # 返回指定列表中所有的key

    8、hvals key # 返回指定列表中key对应的所有value值

    9、del key1 key2...  # key就是列表名,删除指定列表,后面可以跟多个列表名

    10、rename key newkey  # 修改指定列表的名字,newkey就是新名字

    python连接redis

    1、pip3 install redis  # 安装redis模块

    2、vim redis.conf # linux下进入redis的目录下打开配置文件,然后找到protected-mode yes这一行,把yes改成no或者直接注释掉,其他的机器都能连

    3、pkill redis # 杀掉redis的进程

    4、src/redis-server & # 重启redis并在后台运行

    5、src/redis-cli # linux下连接redis

    python中要 import redis  # 导入这个模块

    1、r = redis.Redis(host='loaclhost',port=6379,password='',db=0) # 实例化,host就是redis物理机的地址,port就是端口,password就是密码如果没有则为空,db就是几号数据库

    2、r.get(key)  # 获取数据库下key的值,返回的值是在一个列表中

    3、r.dbsize # 查看当前数据库下有多少条数据

    4、r.delete('key') # 删除对象

    5、r.set(‘key’,'value') # 增加对象并且添加值

    6、r.save() # 将数据写回磁盘,保存时阻塞,成功返回True

    7、r.flushdb() # 清空r中所有的数据

    8、r.incr('key') # 对对象进行数值的自增

    python中的pipeline操作  # pipeline 就是redis在提供单个请求中缓冲多条服务器命令的基类的子类,它通过减少服务器与客户端之间反复的TCP数据库包,从而大大的提高了执行批量命令的功能

    p = r.pipeline()  # 创建一个管道

    p.set('strings key','value') # 创建一个字符串类型的对象名,并且添加值

    p.sadd('sets key','value') # 创建一个集合并且添加值

    p.incr('key') # 对指定的key进行数值自增

    p.execute()

    这一系列的指令可以写在一起 p.set('strings key','value').sadd('sets key','value').incr('key').execute()

    连接redis错误信息

    1、如果连接时候还是提示只能本机连,则在src/redis-server 这条指令后面跟一条指令--protected-mode no 即可

    比如统计一个页面的点击数

    r.set('visit:index:total',0)  # 这个就是在Redis中创建一个对象是visit:index:total,然后value是0

    r.incr('visit:index:total') # 每incr一次,value就会+1

    如何保存一个对象数据

    由于非关系型数据库没有固定的列,因此可以用hash类型保存多样化的对象,比如说保存用户的年龄,email,手机号等内容

    r.hset('users:jim','name','jim')  # users相当于mysql里面的那张表的概念,可以理解成表名,后面的jim就是代表jim这条记录,可以理解成jim这个对象,name就是这个对象下的value值,可以有多个值

    r.hgetall('users:jim') # 取出jim这个对象所有的数据,是以json格式的数据格式返回

    社交网站中用redis做推荐系统原则参考

    通过圈子可以找到有共同特征的人,当一个用户加入一个或几个圈子后,系统可以向用户推荐这个圈子中的人

    r.sadd('circle:game:lol','user:zhangsan')  # 创建圈子并加入用户,circle:game:lol 这个表示游戏lol的圈子,user就是对象表示用户名,后面的value就是用户的名字或者账户

    r.sadd('circle:soccer:InterMilan','user:lisi') # 创建一个足球圈子

    r.smembers(‘circle:game:lol’) # 查看指定圈子中的所有数据

    r.sinter('circle:soccer:InterMilan','circle:game:lol') # 查看两个圈子的交集,就是相同的人

    redis中Pub和Sub可以构建实时的系统消息,比如实时聊天室,或者频道订阅的功能实现

    r.subscibe news  # 订阅news这个频道,此时程序会阻塞

    r.publish news message  # 想news这个频道发送消息,message就是内容

    session 共享存入redis

    我们可以把session存入redis,来进行共享

    1、pip3 install diango-redis-session==0.5.6  # 安装session这个包

    2、在django项目下的settings里面增加session包的配置

    SESSION_ENGINE = 'redis_sessions.sessions' # 把session保存到哪个介质里

    SESSION_REDIS_HOST = 'localhost' # 这个指定连接的地址

    SESSION_REDIS_PORT = 6379  # 端口

    SESSION_REDIS_DB = 4  # 这个就是指定第几号数据库

    SESSION_REDIS_PASSWORD = '' # 这个指定密码,如果没有则为空

    SESSION_REDIS_PREFIX = 'session' # 设置这个就是在保存的时候key自动保存成这个名字

    3、在django的路由文件里配置 # urls.py里写路由

    4、视图文件里要写代码  # views.py里面

    def set_session(request):

      '''保存session的函数'''

      request.session['username'] = 'django' # 用户名

      request.session['verify_code'] = '123456' # 密码

      return HttpResponse('保存session成功')

    def get_session(request):

      '''获取session数据,程序会自动从redis中取出session然后解析出来'''

      username = request.session.get('username') # 会自动连接上redis然后取出用户名

      verify_code = request.session.get('verify_code') # 同上

      text = 'username=%s,verify_code=%s'%(username,verify_code) # 拼接格式返回

      return HttpResponse(text)

  • 相关阅读:
    C++ string 类的 find 方法实例详解
    linux系统中errno与error对照表
    tshark (wireshark)笔记
    自己签发免费ssl证书
    Go语言练习:网络编程实例——简易图片上传网站
    java开源工具包-Jodd框架
    数据库性能瓶颈解决方案
    [转载]如何快速学习一门技术
    [转载]IBM公司发布了最新的power7服务器p750 p770 p780
    计算机组成原理 — 指令系统
  • 原文地址:https://www.cnblogs.com/shizhengquan/p/10859518.html
Copyright © 2011-2022 走看看