天天看点

redis使用,python连接redis,nosqlNoSQL介绍

目录

  • NoSQL介绍
    • 1、NoSQL:一类新出现的数据库(`not only sql`)
    • 2、NoSQL和SQL数据库的比较:
    • 3、Redis介绍
      • 3.1、Redis简介
      • 3.2、Redis特性
      • 3.3、Redis 优势
      • 3.4、Redis应用场景
      • 3.5、推荐阅读
      • 3.6、计算机的存储
      • 3.7、数据库存储
    • 4、Redis安装!
      • 4.1、使用包管理工具安装
        • 4.1.1、在线安装
        • 4.1.2、默认配置文件路径
        • 4.1.3、包管理工具默认可执行程序存储的路径有些应用安装路径是在/usr/bin/
      • 4.2、自定义线下安装(安装包安装)
        • 4.2.1、下载安装包
        • 4.2.2、把安装包压缩文件拷贝到ubuntu虚拟机桌面目录下并解压解压安装包
        • 4.2.3、进入解压后的安转包目录
        • 4.2.4、自行阅读
        • 4.2.5、编译c/c++语言源码
        • 4.2.6、把编译之后的可执行文件放入指定标准安装目录中
        • 4.2.7、把默认提供的配置文件,拷贝到标准目录中
        • 4.2.8、补充
      • 4.3、redis基本操作
        • 4.3.1、指定配置文件启动redis
        • 4.3.2、关闭redis服务器
      • 4.4、redis指令操作
        • 4.4.1.、字符串类型
        • 4.4.2.、hash类型数据操作
        • 4.4.3、list列表类型数据操作
        • 4.4.4、set集合类型
        • 4.4.5、zset有序集合
    • 5、Redis的python客户端的使用
    • 6、结语:

NoSQL介绍

1、NoSQL:一类新出现的数据库(

not only sql

)

  • 泛指非关系型的数据库
  • 不支持

    SQL

    语法
  • 存储结构跟传统关系型数据库中的那种关系表完全不同,

    nosql

    中存储的数据都是KV形式(

    key:value

    ),类似于字典从存储方式,

    key:value

  • NoSQL

    的世界中没有一种通用的语言,每种

    nosql

    数据库都有自己的

    api

    和语法,以及擅长的业务场景
  • NoSQL

    中的产品种类相当多:
    • 1、

      Redis

    • 2、

      Mongodb

    • 3、

      Hbase hadoop

    • 4、

      Cassandra hadoop

2、NoSQL和SQL数据库的比较:

  • 适用场景不同:

    sql

    数据库适合用于关系特别复杂的数据查询场景,

    nosql

    反之
  • 事务 特性的支持:

    sql

    对事务的支持非常完善,而

    nosql

    基本不支持事务
  • 两者在不断地取长补短,呈现融合趋势

3、Redis介绍

3.1、Redis简介

  • Redis

    是一个开源的使用

    ANSI C

    语言编写、支持网络、可基于内存亦可持久化的日志型、

    Key-Value

    数据库,并提供多种语言的API。从2010年3月15日起,

    Redis

    的开发工作由

    VMware

    主持。从2013年5月开始,

    Redis

    的开发由Pivotal赞助。
  • Redis

    NoSQL

    技术阵营中的一员,它通过多种键值数据类型来适应不同场景下的存储需求,借助一些高层级的接口使用其可以胜任,如缓存、队列系统的不同角色

3.2、Redis特性

  • Redis 与其他 key - value 缓存产品有以下三个特点:
  • Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
  • Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
  • Redis支持数据的备份,即master-slave模式的数据备份。

3.3、Redis 优势

  • 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
  • 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
  • 原子 – Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
  • 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。

3.4、Redis应用场景

  • 用来做缓存(ehcache/memcached)——redis的所有数据是放在内存中的(内存数据库)
  • 可以在某些特定应用场景下替代传统数据库——比如社交类的应用
  • 在一些大型系统中,巧妙地实现一些特定的功能:session共享、购物车
  • 只要你有丰富的想象力,redis可以用在可以给你无限的惊喜…….
  • 打车软件的坐标数据,使用的就是缓存!凡无需永久存储的时候,且该数据频繁被添加和读取;

3.5、推荐阅读

  • redis官方网站
  • redis中文官网

3.6、计算机的存储

  • 永久存储 —— 磁盘 —— 断电不会丢失数据,IO慢(数据读写慢)
  • 缓存 —— 内存条 —— 断电丢失数据,IO快(读写很快)

3.7、数据库存储

  • 永久存储库:

    Mysql

  • 缓存库:

    Redis

    缓存数据(用它来做缓存,该数据库也可以永久保存数据)
  • 给永久存储数据库,架设缓存层,来提高数据的读取的效率;

4、Redis安装!

4.1、使用包管理工具安装

4.1.1、在线安装

ubuntu里

apt-get

就是包管理工具,官网提供的快速安装应用的工具;

Mac里

brew

;

RedHat里

yum

;

sudo apt-get install redis-server
           

4.1.2、默认配置文件路径

/etc/redis/redis.conf
           

4.1.3、包管理工具默认可执行程序存储的路径有些应用安装路径是在/usr/bin/

/usr/local/bin/redis-server
/usr/local/bin/redis-cli
           

4.2、自定义线下安装(安装包安装)

4.2.1、下载安装包

4.2.2、把安装包压缩文件拷贝到ubuntu虚拟机桌面目录下并解压解压安装包

cd ~/Desktop
tar -zxvf redis-3.0.6.tar.gz
           

4.2.3、进入解压后的安转包目录

cd redis-3.0.6
           

4.2.4、自行阅读

自己阅读安装目录下的README和INSTALL文件
(一般的安装包都提供该文件,用于说明安装和使用步骤的)
           

4.2.5、编译c/c++语言源码

4.2.6、把编译之后的可执行文件放入指定标准安装目录中

4.2.7、把默认提供的配置文件,拷贝到标准目录中

sudo cp ./redis.conf /etc/redis/
           

4.2.8、补充

redis

线下安装的源码和编译获取的可执行程序,都在

src

目录中;

4.3、redis基本操作

4.3.1、指定配置文件启动redis

sudo redis-server /etc/redis/redis.conf
           

4.3.2、关闭redis服务器

4.4、redis指令操作

4.4.1.、字符串类型

# 4.4.1.1、设置键值对
set <key> <value>

# 4.4.1.2、获取一个key的值
get <key>

# 4.4.1.3、设置键值对的同时指定有效期
setex <key> <有效期,秒> <value>

# 4.4.1.4、一次设置多个键值对
mset <key1> <value1> <key2> <value2> .... <keyN> <valueN>
# 4.4.1.5、一次获取多个键的值
mget <key1> <key2> ... <keyN>

# 4.4.1.5、查看当前库有哪些key
# 此处正则只支持“*”、“[]”和“?”三种;
# “*”匹配任意字符
# “[]”匹配指定字符
# “?”匹配任意一个字符
keys <正则表达式>
           

4.4.2.、hash类型数据操作

# 4.4.2.1、新建只有一个属性的哈希
hset <key> <field> <value>

# 4.4.2.2、新建有多个属性的哈希
hmset <key> <field1> <value1> <field2> <value2> ...

# 4.4.2.3、获取一个哈希的所有键
hkeys <key>

# 4.4.2.4、获取一个哈希的一个属性值
hget <key> <field>

# 4.4.2.5、获取一个哈希的多个属性值
hmget <key> <field1> <field2>...

# 4.4.2.5、删除一个哈希中的属性
hdel <key> <field1> <field2>...
# 注意:如果使用"del <key>"命令会把整个哈希删除
           

4.4.3、list列表类型数据操作

# 4.4.3.1、列表左侧插入
lpush <key> <value1> <value2>...

# 4.4.3.2、列表右侧插入
rpush <key> <value1> <value2>...

# 4.4.3.3、列表指定位置插入(在xxx之前插入)
linsert <key> before <xxx> <value>

# 4.4.3.4、列表指定位置插入(在xxx之后插入)
linsert <key> after <xxx> <value>

# 4.4.3.5、列表成员获取
# 整数代表下表,和python列表下标类似
# 索引从左侧开始,第⼀个元素为0
# 索引可以是负数,表示从尾部开始计数,如-1表示最后⼀个元素
lrange <key> 0 -1 # [0,-1]获取所有
lrange <key> 0 2 # [0,2]获取下标0,1,2三个值

# 4.4.3.6、修改指定下标位置的值
lset <key> <index> <新值>

# 4.4.3.7、删除列表中的一个成员
# 1、其中count为0,代表删除所有相同的值
# 2、其中count为n(正整数),代表从左到右遍历删除相同的值
# 3、其中count为-n(负整数),代表从右到左遍历删除相同的值
lrem <key> <count> <value>

# 4.4.3.8、列表的截取
# 截取下标[start,end]范围类的数据
# 注意:直接操作原列表;
ltrim <key> <start> <end>
           

4.4.4、set集合类型

特征:

  • 成员无序
  • 值的类型为string
  • 成员不能重复,具备唯一性
  • 集合成员没有修改操作
# 4.4.4.1、添加集合成员
sadd <key> <member1> <member2> <member3>...

# 4.4.4.2、查看集合中的所有成员
smembers <key>

# 4.4.4.3、删除指定成员
srem <key> <member>
           

4.4.5、zset有序集合

所谓有序集合,就是在原有集合set基础上,给每一个成员添加一个分值/权重值来记录每个成员的顺序!

  • 使用分值/权重值记录顺序,故有序
  • 成员数据类型为string
  • 成员唯一
  • 分值/权重值是一个浮点数
# 4.4.5.1、添加成员
zadd <key> <score1> <member1> <score2> <member2> ...

# 4.4.5.2、根据下标获取有续集成员
# 默认有序集合顺序是按照分值生序排列
# 以下,获取[start, stop]下标范围内的成员
# 索引从左侧开始,第⼀个元素为0
# 索引可以是负数,表示从尾部开始计数,如-1表示最后⼀个元素
zrange <key> <start> <stop>

# 4.4.5.3、返回分值范围内的成员: min_scoer <= 分值 <= max_score
zrangebyscore <key> <min_score> <max_score>

# 4.4.5.4、删除指定成员
zrem <key> <member1> <member2> ...

# 4.4.5.5、删除指定分值范围内的成员
zremrangebyscore <key> <min_score> <max_score>
           

5、Redis的python客户端的使用

from redis.client import StrictRedis

# 1、新建客户端链接对象
conn = StrictRedis(
	host='127.0.0.1',
  port=6379
)

# 2、通过客户端对象中的实例方法对redis进行增删改查操作
# set name haige
conn.set("name", "haige")
# get name
conn.get("name")
# zadd book_count 99 西游记 88 红楼梦 77 三国演义
# 注意:在较新的redis客户端版本中,有续集的新增操作中,成员及分值是以python字典形式传入函数中 —— 成员为key,分值为value
conn.zadd("book_count", {"西游记":99, "红楼梦":88, "三国演义":77})
           

6、结语:

个人记录,新手入门,多多学习,欢迎大家交流探讨!

个人网站:

http://106.54.78.238/

song_of _sea的个人网站 http://106.54.78.238/