Nosql--Redis数据库

本文介绍了非关系型数据库Redis的基本概念及其五大核心数据类型:String、Hash、List、Set和ZSet的操作方法。详细解释了每种数据类型的创建、查询、更新、删除等操作,并提供了官方文档链接方便读者深入学习。
摘要由CSDN通过智能技术生成

非关系型数据库简介:

-随着访问量的上升,网站的数据库性能出现了问题,于是非关系型数据库就被设计出来
-优缺点
    --优点:
        高可扩展性  分布式计算   低成本    
        架构的灵活性,半结构化数据
    --缺点:
         没有标准化 有限的查询功能  

Redis数据类型–基础

redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合),zset(有序集合)
官方文档--命令查询:http://redis.cn/commands.html

(一)string字符串

字符串类型是Redis最基本的数据类型,一个键最大能存储512MB
-同时字符串类型是二进制安全的,也就意味着字符串可以包含任何数据,比如jpg图片或序列化对象

1.创建数据

 设置键值
 set key value    #set  name 'sun'
 设置键值及过期时间,以秒为单位
 setex key seconds value  #setex name 2 'sun' 
 设置多个键值
 mset key value[key value] #mset name 'sun' age 18

2.获取键值

根据键获取值,若没有此键则返回nil
 get key  #get name
根绝多个键获取多个值
 mget key[key..] #mget name age address gender

3.运算—要求值必须是数字

   将key对应的value加1
   incr key  #incr age
   将key对应的value加整数
   incrby key increment  #incrby key 12 
   将key对应的value减1
   decr key  #decr age
   将key对应的value减整数
   decrby key decrement #decrby age 8

4.键的查判

查找键,参数支持正则
keys pattern #keys * 查找当前库所有的键
判断键是否存在,存在返回1,不存在返回0
exists key   #exists hobby
#删除键及对应的值
del key #del address

5.追加值

    append key value  #append name 'handsome'
    获取值得长度   strlen key #strlen name

(二)hash哈希

-redis hash是一个键值对集合,是一个string类型的field和 value的映射表,hash特别适合存储对象

1.创建数据

 设置单个属性
 hset key field value #hset car name bmw
 设置多个属性
 hmset key field value[field value]  #hset car color white price 100

2.获取数据

获取单个属性的值
 hget key field  #hget car name
 获取多个属性的值
 hmget key field[field...] #hmget car name price color
 获取所有属性和值
 hgetall key #hgetall car
 获取所有属性
 hkeys key  #hkeys car
 获取所有值
 hvals key #hvals car

3.属性的查判

  #判断属性是否存在
  hexists key field  
  删除属性及值
  hdel key field [field..]

(三)list列表

redis list是简单的string类型的列表,按照插入顺序排序。

1.创建数据

 在头部插入数据
 lpush key value[value..] #lpush username 'xiaoming'
 在尾部插入数据
 rpush key value[value..] #rpush userjob 'teacher'
 在一个元素的前或后插入值
 linsert key before(after) pivot value
 #rpush mylist 'hello' 
 rpush mylist 'world'
 linsert mylist before 'world' 'great'

2.获取数据

出并且返回key对应的list的第一个元素
  lpop key   #lpop username
 --移除并返回key的list的最后一个元素
 rpop key  #rpop mylist
 --返回存储在key的列表里指定范围内的元素
  start和end偏移量都是基于0的下标
  lrange key start end #lrange mylist 0 -1

(四)set集合

redis set是string类型的无序集合;元素具有唯一性,不重复

1.创建数据

 sadd key member[member..]  #sadd myadd 1 2 3 4

2.获取数据

   -返回key集合所有的元素
  smembers key   #smembers myadd
  -返回集合元素的个数
  scard key  #scard myadd

(五)zset集合

-redis zset也是string类型的元素的集合,但每个元素会根据权重进行从小到大的排序。

1.创建数据

 zadd key score member[ score member..]
  score是一个double类型的权重值
  #zad  myzadd  1 'food' 2 'game' 3 music'

2.获取数据

 -返回指定范围的元素
   zrange key start stop  #zrange myzadd 0 -1
 -返回元素个数
   zcard key  #zcard myzadd

数据传递的两种方式

发布订阅

客户端发布频道的消息,将会被推送到所有订阅测频道的客户端
--订阅  subscribe 频道名[频道名..]
    unsubscribe 频道名(取消频道)
--发布
  publish 频道 消息

注意:这个是在同一个IP下,不同客户端完成操作的

–主从配置

 -修改配置文件 
     设置主服务器  bind xxxx(主服务器IP)
     设置从服务器  bind xxx(从服务器IP) 
                   slaveof xxx主服务器IP 6379 (注意添加端口号)

 -在master上写数据
    set hello world

 -在slave上读数据
     get hello

在python中的应用

–StrictRedis方法

  import redis 
  #建立连接
  r=redis.StrictRedis(host='localhost',port=6379)
  #根据数据类型不同,调用不同的方法,完成读写
  r.set('name','sun')
  r.get('name').decode(encoding='utf-8') #返回的是一个字节组,因此需要解码

–pipeline方法

  #该方法可以缓冲多条命令,然后一次性进行执行,减少客户端-服务器之间TCP数据库包,从而提高效率
  import redis
  r=redis.StrictRedis(host='localhost',port=6379)
  pipe=r.pipeline()
  pipe.set('address','SH')
  pip.get('name')
  pip.execute()

–封装

import redis

  class RedisHelper():
        def __init__(self,host='localhost',port=6379):
            self.__redis=redis.StrictRedis(host,port)
        def get(self,key):
            if self.__redis.exists(key):
                return self.__redis.get(key)
            else:
                return ""
        def set(self,key,value):
            self.__redis.set(key,value)

r=RedisHelper()
r.set('me','handsome')
r.get('me')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值