Reids知识总结

Redis学习笔记

一、安装

  1. 下载

    • wget http://download.redis.io/releases/redis-4.0.9.tar.gz

      说明: wget命令用来从指定的URL下载文件参考https://www.cnblogs.com/imist/p/11417643.html

  2. 解压

    • tar xzf redis-4.0.9.tar.gz
  3. 移动文件到usr/local⽬录下

    • sudo mv ./redis-4.0.9 /usr/local/redis/ – redis-4.0.9 到/usr/local 并创建文件夹redis
  4. 进⼊redis⽬录,并生成

    • cd /usr/local/redis/
    • sudo make - 将C语言编写的redis进行编译
  5. 测试

    • sudo make test
  6. 安装,将redis的命令安装到/usr/local/bin/⽬录

    • sudo make install
  7. 安装完成后,我们进入目录/usr/local/bin中查看

    • cd /usr/local/bin – 该文件下的命令都是可以直接运行的命令

    • ls -al

      redis-server		 redis服务器
      redis-cli 			 redis命令行客户端
      redis-benchmark 	 redis性能测试工具
      redis-check-aof 	 AOF文件修复工具
      redis-check-rdb 	 RDB文件检索工具
      
  8. 移动配置文件到/etc/⽬录下(配置⽂件⽬录为/usr/local/redis/redis.conf)

    • sudo cp /usr/local/redis/redis.conf /etc/redis/

      说明:etc为系统配置文件夹,将redis配置文件放到etc下,则需要管理员权限才能修改etc文件下的配置参数

  9. 启动服务器

  • sudo redis-server 选择一个配置文件启动服务器
  • redis-cli -h 服务器ip -p 服务器端口
  1. 重新启动redis服务
    • sudo service redis-server restart

二、配置

  1. 查看

    • sudo vi /etc/redis/redis.conf
  2. 配置参数说明

    • 绑定ip:如果需要远程访问,可将此⾏注释,或绑定⼀个真实ip

      默认:bind 127.0.0.1

    • 端⼝,默认为6379

      默认:port 6379

    • 是否以守护进程运⾏

      • 如果以守护进程运⾏,则不会在命令⾏阻塞,类似于服务
      • 如果以⾮守护进程运⾏,则当前终端被阻塞
      • 设置为yes表示守护进程,设置为no表示⾮守护进程
      • 推荐设置为yes (daemonize yes)
    • 数据⽂件

      dbfilename dump.rdb

    • 数据⽂件存储路径

      dir /var/lib/redis

    • ⽇志⽂件

      logfile “/var/log/redis/redis-server.log”

    • 数据库,默认有16个

      database 16

    • 主从复制,类似于双机备份。

      slaveof

二、Redis数据结构

  • redis是key-value的数据结构,每条数据都是⼀个键值对

  • 键的类型是字符串

    注意:键不能重复

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KwhjNC7Z-1571802118387)(images\Redis结构.png)]

  • 值的类型分为五种:

    • 字符串string

    • 哈希hash

    • 列表list

    • 集合set

    • 有序集合zset

  • 中⽂官⽹查看命令⽂档http://redis.cn/commands.html

三、string类型

  1. 说明

    • 字符串类型是 Redis 中最为基础的数据存储类型,它在 Redis 中是二进制安全的,这便意味着该类型可以接受任何格式的数据,如JPEG图像数据或Json对象描述信息等。在Redis中字符串类型的Value最多可以容纳的数据长度是512M。
  2. 基本操作

    • 增加、修改 – set

      说明: 如果设置的键不存在则为添加,如果设置的键已经存在则修改

      1. 设置键值  						set key value   				
      eg: 设置键为name值为itcast的数据 => set name itcast
      	
      2. 设置键值及过期时间,以秒为单位		setex key seconds value  /  set key [EX seconds]		 
      eg: 设置键为aa,值为aa过期时间为3秒的数据 => setex aa 3 aa   /	set aa aa ex 3
      	
      3. 设置多个键值					   mset key1 value1 key2 value2 ... 
      eg: mset a1 python a2 java a3 c
      	
      4. 追加值							append key value				
      eg: 向键为a1中追加值' haha' => append 'a1' 'haha'
      

    • 查询

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

    • 删除与键命令

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

四、hash类型

  1. 说明

    • hash⽤于存储对象,对象的结构为属性、值;值的类型为string
  2. 基本操作

    • 增加、修改 – hset

      1. 设置单个属性			hset key field value
      eg:
        设置键 user的属性name为zs => hset user name zs
        
      2. 设置多个属性			hmset key field1 value1 field2 value2 ...
      
  • 查询

    1. 获取指定键所有的属性	 hkeys key
    	eg:
    		获取键u2的所有属性 => hkeys u2
    		
    2. 获取⼀个属性的值		   hget key field
    	
    3. 获取多个属性的值		   hmget key field1 field2 ...
    	
    4. 获取所有属性的值		   hvals key
    
    5. 获取所有的属性和值	  hgetall key    (key1 value1 key2 value2 ...)
    
  • 删除

    1. 删除整个hash键及值,使⽤del命令 同字符串操作
    
    2.删除属性,属性对应的值会被⼀起删除		hdel key field1 field2 ...
    
    

五、list类型

  1. 说明

    • 列表的元素类型为string,按照插⼊顺序排序
  2. 基本操作

    • 增加

      1. 在左侧插⼊数据						lpush key value1 value2 ... valuen
       * 结果为 valuen ... value2 value1 (这里同时完成了创建)
       
      2. 在右侧插⼊数据         				 rpush key value1 value2 ... valuen
       * 结果为 value1 value2 ... valuen
       
      3. 在指定元素的前或后插⼊新元素		   linsert key before或after 现有元素 新元素
      
    • 查询

      1. 返回列表⾥指定范围内的元素			lrange key start stop
        - start、stop为元素的下标索引	(这里左右取值索引均为封闭空间)
        - 索引从左侧开始,第⼀个元素为0
        - 索引可以是负数,表示从尾部开始计数,如-1表示最后⼀个元素
        eg:
         获取键为'a1'的列表所有元素  => lrange a1 0 -1
         
      2. 设置指定索引位置的元素值       		 lset key index value
        eg:
        	修改键为'a'的列表中下标为1的元素值为'z' => lset a 1 z
      
    • 删除

      1. 删除指定元素
       - 将列表中前count次出现的值为value的元素移除  lrem key count value
       - count > 0: 从头往尾移除
       - count < 0: 从尾往头移除
       - count = 0: 移除所有
       2. 截取
       - 截取列表指定下表的元素  ltrim key start stop
      

六、set类型

  1. 说明

    • ⽆序集合
    • 元素为string类型
    • 元素具有唯⼀性,不重复
    • 对于集合没有修改操作
  2. 基本操作

    • 增加

      1. 添加元素						sadd key member1 member2 ...
      eg: 向键'a3'的集合中添加元素'zhangsan'、'lisi'、'wangwu'  => sadd a3 zhangsan sili wangwu
      
    • 查询

      1. 返回所有的元素				  smembers key
        eg:
         获取键'a3'的集合中所有元素  =>   smembers a3
      
    • 删除

      1. 删除指定元素					srem key member1
        eg:
         删除键'a3'的集合中元素'wangwu'  =>   srem a3 wangwu
      

七、zset类型

  1. 说明

    • sorted set,有序集合

    • 元素为string类型

    • 元素具有唯⼀性,不重复

    • 每个元素都会关联⼀个double类型的score,表示权重,通过权重将元素从⼩到⼤排序

    • 没有修改操作

  2. 基本操作

    • 增加

      1. 添加元素						zadd key score1 member1 score2 member2 ...
      eg: 
      	向键'a4'的集合中添加元素'lisi'、'wangwu'、'zhaoliu'、'zhangsan',权重分别为4、5、6、3
      	zadd a4 4 lisi 5 wangwu 6 zhaoliu 3 zhangsan
      
    • 查询

      1. 返回指定范围内的元素			zrange key start stop
       - start、stop为元素的下标索引 (这里左右取值索引均为封闭空间)
       - 索引从左侧开始,第⼀个元素为0
       - 索引可以是负数,表示从尾部开始计数,如-1表示最后⼀个元素
      eg:
      	获取键'a4'的集合中所有元素 => zrange a4 0 -1
      	
      2. 返回score值在min和max之间的成员 zrangebyscore key min max
      eg:
          获取键'a4'的集合中权限值在5和6之间的成员 => zrangebyscore a4 5 6
          
      3. 返回成员member的score值        zscore key member
      eg:
      	获取键'a4'的集合中元素'zhangsan'的权重 => zscore a4 zhangsan
      
    • 删除

      1. 删除指定元素					zrem key member1 member2 ...
       eg:
         删除集合'a4'中元素'zhangsan'  =>   zrem a4 zhangsan
         
      2. 删除权重在指定范围的元素			zremrangebyscore key min max
      eg:
      	删除集合'a4'中权限在5、6之间的元素 => zremrangebyscore a4 5 6
      

八、记忆

  • get => 获取 (即value)

  • m => 多个值

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