Redis常用数据类型

一、 基本概念

  Redis 是一个高性能的key-value数据库。
  NoSQL:一类新出现的数据库(not only sql);泛指非关系型的数据库,不支持SQL语法

配置

Redis的配置信息在/etc/redis/redis.conf下。

查看

sudo vi /etc/redis/redis.conf

核心配置选项

绑定ip:如果需要远程访问,可将此⾏注释,或绑定⼀个真实ip
bind 127.0.0.1
端⼝,默认为6379
port 6379
数据⽂件 : dbfilename dump.rdb

数据⽂件存储路径 : dir /var/lib/redis

⽇志⽂件 : logfile “/var/log/redis/redis-server.log”

数据库,默认有16个 : database 16

二、 连接启动方式

1.启动redis服务器命令:

配置文件名称 (可以不填,读取默认配置)

redis-server 

2.连接redis客户端命令:

redis-cli -h ip地址 -p 端口 -c:连接集群
如:

redis-cli -h 47.101.63.222 -p 56379

3. 连接本地:redis-cli

4. 设置密码:config set requirepass pass_123456

5. 获取密码:config get requirepass

6. 登录:auth pass_123456

7. 切换数据库:

 数据库没有名称,默认有16个,通过0-15来标识,连接redis默认选择第一个数据库

  select 10

三、 基本的数据格式和操作

string类型:

存值

	设置值:set key value
        (设置键为name值为itcast的数据)
        set name itcast
 
    设置值,过期时长:setex key seconds value
        (设置键为aa值为aa过期时间为3秒的数据)
        setex aa 3 aa
 
    设置多个键值: mset key1 value1 key2 value2 ...
        (设置键为'a1'值为'python'、键为'a2'值为'java'、键为'a3'值为'c')
        mset a1 python a2 java a3 c
 
        
    追加值:append key value
        (向键为a1中追加值' haha')
         append 'a1' 'haha'

获取值

    根据键获取值,如果不存在此键则返回nil --  get key
        (获取键'name'的值)
        get 'name'
 
    根据多个键获取多个值: mget key1 key2 ...
        (获取键a1、a2、a3'的值)
        mget a1 a2 a3

键命令

    查找键,参数⽀持正则表达式;--  keys pattern
 
    1. 查看所有键     keys *
 
    2. 查看名称中包含 a 的键    keys 'a*'
 
    3. 判断键是否存在,如果存在返回1,不存在返回0  exists key1
 
    4. 查看键对应的value的类型  type key
 
    5. 删除键及对应的值  del key1 key2 ...
         (删除键a2、a3) -- del a2 a3
 
    6. 设置过期时间,以秒为单位,如果没有指定过期时间则⼀直存在,直到使⽤DEL移除
           expire key seconds
 
         (设置键'a1'的过期时间为3秒) -- expire 'a1' 3
 
    7. 查看有效时间,以秒为单位  ttl key
         (查看键'bb'的有效时间) --  ttl 'bb'

hash类型

⽤于存储对象,对象的结构为属性、值; 值的类型为string

   1. 设置单个属性  hset key field value
        (设置键 user的属性name为itheima) -- hset user name itheima

   2. 设置多个属性  hmset key field1 value1 field2 value2 ...
        (设置键u2的属性name为itcast、属性age为11)
           hmset u2 name itcast age 11

   3. 获取指定键所有的属性  hkeys key

   4. 获取⼀个属性的值   hget key field
        (获取键u2属性'name'的值)
           hget u2 'name'

   5. 获取多个属性的值  hmget key field1 field2 ...

   6. 获取所有属性的值  hvals key

   7. 删除属性的值: hdel key field
        (删除键'u2'的属性'age')
         hdel u2 age

list类型:

列表的元素类型为string

    1. 在左侧插⼊数据   lpush key value1 value2 ...
 
    2. 在右侧插⼊数据   rpush key value1 value2 ..
 
    3. 在指定元素的前或后插⼊新元素
         linsert key before或after 现有元素 新元素
 
    3. 查看:
         rpop 右边取出元素(取出后list元素个数减1)
         rpop key  (与 lpush 连用;形成队列操作)
          
         lpop: 左侧取出一个元素,取出后list元素个数减1
 
    4. 获取: 返回列表⾥指定范围内的元素
        lrange key start stop
 
            start、stop为元素的下标索引
            索引从左侧开始,第⼀个元素为0
            索引可以是负数,表示从尾部开始计数,如-1表示最后⼀个元素
 
         (获取键为'a1'的列表所有元素)
            lrange a1 0 -1
 
    5. 设置指定索引位置的元素值
        lset key index value
            索引从左侧开始,第⼀个元素为0
            索引可以是负数,表示尾部开始计数,如-1表示最后⼀个元素
 
           (修改键为'a1'的列表中下标为1的元素值为'z')
             lset a1 1 z 
 
    6. 删除
       1) 删除指定元素  lrem key count value
            将列表中前count次出现的值为value的元素移除
            count > 0: 从头往尾移除
            count < 0: 从尾往头移除
            count = 0: 移除所有

set类型:

属性:   ⽆序集合
        元素为string类型
        元素具有唯⼀性,不重复
        说明:对于集合没有修改操作
    1. 增加
    添加元素: sadd key member1 member2 
 
    2. 获取
    返回所有的元素: smembers key
 
    3. 删除
    删除指定元素: srem key
      (删除键'a3'的集合中元素'wangwu')
        srem a3 wangwu

zset类型(有序集合):

属性:sorted set,有序集合
	     元素为string类型
     元素具有唯⼀性,不重复
     每个元素都会关联⼀个double类型的score,表示权重,通过权重将元素从⼩到⼤排序
     说明:没有修改操作 
   1. 增加
      添加元素: zadd key score1 member1 score2 member2
       (向键'a4'的集合中添加元素'lisi'、'wangwu'、'zhaoliu'、'zhangsan',权重分别为4、5、6、3)
        zadd a4 4 lisi 5 wangwu 6 zhaoliu 3 zhangsan

   2. 获取
      返回所有的元素: zrange key start stop  
       start、stop为元素的下标索引
       索引从左侧开始,第⼀个元素为0
       索引可以是负数,表示从尾部开始计数,如-1表示最后⼀个元素 

   3. 删除
      删除指定元素: zrem key member1 member2 ...

      删除权重在指定范围的元素: zremrangebyscore key min max
       (删除集合'a4'中权限在5、6之间的元素)
        zremrangebyscore a4 5 6

四、安装方式:

    1. 联⽹安装包redis:  pip install redis
    2. 到中⽂官⽹-客户端下载redis包的源码,使⽤源码安装

一步步执行 wget https://github.com/andymccurdy/redis-py/archive/master.zip
unzip master.zip
cd redis-py-master
sudo python setup.py install

五、.与python 交互

1. 引入模块

    from redis import *
(这个模块中提供了StrictRedis对象(Strict严格),⽤于连接redis服务器,并按照不同类型提供 了不同⽅法,进⾏交互操作)

2. 连接 redis

(通过init创建对象,指定参数host、port与指定的服务器和端⼝连接,host默认为localhost,port默认 为6379,db默认为0)

   sr = StrictRedis(host='localhost', port=6379, db=0)
   简写
   sr=StrictRedis()

3.string-增加

⽅法set,添加键、值,如果添加成功则返回True,如果添加失败则返回False

from redis import *
if __name__=="__main__":
    try:
        #创建StrictRedis对象,与redis服务器建⽴连接
        sr=StrictRedis()
        #添加键name,值为itheima
        result=sr.set('name','itheima')
        #输出响应结果,如果添加成功则返回True,否则返回False
        print(result)
    except Exception as e:
        print(e)

4.string-获取

⽅法get,添加键对应的值,如果键存在则返回对应的值,如果键不存在则返回None

from redis import *
if __name__=="__main__":
    try:
        #创建StrictRedis对象,与redis服务器建⽴连接
        sr=StrictRedis()
        #获取键name的值
        result = sr.get('name')
        #输出键的值,如果键不存在则返回None
        print(result)
    except Exception as e:
        print(e)

5.string-修改

⽅法set,如果键已经存在则进⾏修改,如果键不存在则进⾏添加
编写代码如下

from redis import *
if __name__=="__main__":
    try:
        #创建StrictRedis对象,与redis服务器建⽴连接
        sr=StrictRedis()
        #设置键name的值,如果键已经存在则进⾏修改,如果键不存在则进⾏添加
        result = sr.set('name','itcast')
        #输出响应结果,如果操作成功则返回True,否则返回False
        print(result)
    except Exception as e:
        print(e)
 

6.string-删除

⽅法delete,删除键及对应的值,如果删除成功则返回受影响的键数,否则则返 回0
编写代码如下

from redis import *
if __name__=="__main__":
    try:
        #创建StrictRedis对象,与redis服务器建⽴连接
        sr=StrictRedis()
        #设置键name的值,如果键已经存在则进⾏修改,如果键不存在则进⾏添加
        result = sr.delete('name')
        #输出响应结果,如果删除成功则返回受影响的键数,否则则返回0
        print(result)
    except Exception as e:
        print(e)

7.获取键

⽅法keys,根据正则表达式获取键
编写代码如下

from redis import *
if __name__=="__main__":
    try:
        #创建StrictRedis对象,与redis服务器建⽴连接
        sr=StrictRedis()
        #获取所有的键
        result=sr.keys()
        #输出响应结果,所有的键构成⼀个列表,如果没有键则返回空列表
        print(result)
    except Exception as e:
        print(e)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值