redis使用,python连接redis,nosql

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

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、推荐阅读

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、下载安装包

# 1、下载安装包(选择3.0.6版本):http://download.redis.io/releases/

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++语言源码

sudo make

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

sudo make install

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服务器

redis-cli -h 127.0.0.1 -p 6379 shutdown

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/

猜你喜欢

转载自blog.csdn.net/weixin_44824717/article/details/107874911