python学习之 Redis数据库

 

一、Redis简介

redis常用作服务器与数据库之间的一个缓存

客户端   服务器   redis   数据库

客户端向服务器发起登录请求,服务器将用户名和密码拿去与redis中的缓存匹配,
*若存在匹配值,且验证通过。则允许登录。
*若存在匹配值,且验证不通过,则不允许登录
*若redis中找不到匹配值,则向数据库发起请求,验证完成后,再将信息写入redis中。



redis官方没有为windows开发环境,但从github上可以找到windows版本的redis。

1、rerdis windows下载连接:https://github.com/ServiceStack/redis-windows

2、下载完成后找一个目录解压,解压完成后在download目录下找到redis64-2.8.2101解压在你需要安装的目录

3、修改redis.windows.conf文件:
   1、455行添加:maxheap 1024000000
   2、387行添加:requirepass 密码(密码处替换为你自己的密码)
***此处注意巨坑:在所有修改过的配置项前不能留有空格,否则无法启动

4、启用cmd进入安装路径,执行redis-server.exe redis.windows.conf

5、新启动一个cmd,进入对应目录执行:redis-cli.exe
   ping命令测试服务器连接情况,第一次会显示连接有误
   输入auth '密码'进行密码校验

6、可视化操作工具:redis-desktop


数据操作:1、redis是key-value的数据,所以每个数据都是一个键值对
        2、键的类型是字符串
        3、值的类型有五种:字符串string
                           哈希hash
                           列表list
                           集合set
                           有序集合zset
        4、数据操作的全部命令  http://redis.cn/commands.html

 

二、redis命令

一、String

概述:是redis最基本的类型,最大能存储512mb的数据,string类型是二进制安全的,即可以存储任何数据,比如数字、图片、序列化对象等

1、设置
   a、设置键值
      语法:set key value
      示例:set a "hello redis"(加引号表示引号内是一串数据)

   b、设置键值过期时间,以秒为单位
      语法:setex key second value
      示例:setex c 10 good

   c、设置多个键值
      语法:mset key value [key value...]
      示例:mset d good e nice


2、获取
   a、根据键获取值,如果键不存在则返回Null(none 0 nil)
      语法:get key
      示例:get e

   b、根据多个键获取多个值
      语法:mget key [key....]
      示例:mget a b d

3、运算
   要求:值是字符串类型的数字
   a、将key对应的值加1
      incr key
   b、将key对应的值减1
      decr key
   c、将key对应的值加整数
      incrby key intnum
   d、将key对应的值加整数
      decrby key intnum

4、其他
   a、追加值
      语法:append key value
      示例:append b !(追加一个感叹号)
   b、获取值长度
      strlen key

 

二、key

1、查找键,参数支持正则
   语法:keys pattern
   示例:keys *

2、判断键是否存在,存在返回1,否则0
   语法:exists key
   示例:exists a

3、查看键对应的value类型
   type key

4、删除键及对应的值
   del key [key ....]

5、设置过期时间
   expire key seconds

6、查看有效时间
   ttl key

三、hash

概述:用于存储对象
{
   name:"tom",
   age:18
}
1、设置
   a、设置单个值
      hset key field value
   b、设置多个值
      语法:hmset key field value[field value ....]
      示例:hmset p2 name lc age 22
2、获取
   a、获取一个属性的值
      语法:hget key field
      示例:hget p1 name
   b、获取多个值
      hmget key filed [filed...]
   c、获取所有属性和值
      hgetall key
   d、获取所有的属性
      hkeys key
   e、获取所有值
      hvals key
   f、返回包含属性的个数
      hlen key
3、其他
   a、判断属性是否存在,存在返回1,否则0
      hexists key field
   b、删除属性及值
      hdel key field [filed....]
   c、返回值的字符串长度
      hstrlen key field(有错误)

四、list

概述:列表的元素类型为string,按照插入顺序排序,在列表的头部或尾部添加数据

1、设置:
   a、在头部插入
      lpush key value [values]
   b、在尾部插入
      rpush key value [values]
   c、在一个元素的前或后插入新元素
      linsert key before|after pivot value
   d、设置指定索引的元素值
      lset key index value
      注意:index下标从0开始,索引值也可以是负数,表示偏移量从list的尾部开始,如-1表示最后一个元素
2、获取:
   a、移除并返回key对应的list的第一个元素
      lpop key
   b、移除并返回key对应的list的最后一个元素
      rpop key
   c、返回存储在key的列表中的指定范围的元素
      lrange key start end
      注意:start end都是从0开始,偏移量可以是负数
3、其它
   a、裁剪列表,改为原集合的一个子集
      ltrim key start end
      注意:start end都是从0开始,偏移量可以是负数
   b、返回存储在key里的list的长度
      llen key
   c、返回列表中索引对应的值
      lindex key index

五、set

概述:无序集合,元素类型为string类型,元素具有唯一性,不重复

1、设置
   a、添加元素
      sadd key member [member...]
2、获取
   a、返回key集合中所有元素
      smembers key
   b、返回集合元素个数
      scard key
3、其它
   a、求多个集合的交集
      sinter key [key...]
   b、求多个集合的差集
      sdiff key [key..]
   c、求多个集合的合集
      sunion key [key]
   d、判断元素是否在集合中,存在返回1,反之返回0
      sismember key member

六、zset

概述:
   a、有序集合,元素类型为string,元素具有唯一性,不能重复
   b、每个元素都会关联一个double类型的score(表示权重)
   c、通过权重的大小排序,元素的score可以相同
1、设置
   a、添加
      zadd key score memeber [score memeber ..]
2、获取
   a、返回指定范围的元素
      zrange key start end
   b、返回元素个数
      zcard key
   c、返回有序集合key中,score在min和max之间的元素的个数
      zcount key min max
   d、返回有序集合key中,成员member的score值
      zscore key member

三、redis与python交互

#安装redis库  pip install redis

import redis

#连接
r = redis.StrictRedis(host="localhost",port=6379,password="root")

#方法一:根据数据类型不同调用相应的方法
#写
# r.set("p1","good")
#
# #读取
# print(r.get("p1"))


#方法二:pipline
#缓存多条命令,然后依次执行,减少服务器-客户端之间的tcp数据包

pipe = r.pipeline()
pipe.set("p2","nice")
pipe.set("p3","handsome")
pipe.set("p4","cool")
pipe.execute()

 

你可能感兴趣的:(python,数据库)