zoukankan      html  css  js  c++  java
  • Redis基本使用(一)

    redis

    window系统的redis是微软团队根据官方的linux版本高仿的

    官方原版: https://redis.io/

    中文官网:http://www.redis.cn

    1 redis下载和安装

    下载地址: https://github.com/MicrosoftArchive/redis/releases

    使用以下命令启动redis服务端

    redis-server C:/tool/redis/redis.windows.conf
    

    关闭上面这个cmd窗口就关闭redis服务器服务了。

    redis作为windows服务启动方式

    redis-server --service-install redis.windows.conf
    

    启动服务:redis-server --service-start
    停止服务:redis-server --service-stop

    启动内置客户端连接redis服务:

    3.2 redis的配置

    redis 安装成功以后,window下的配置文件保存在软件 安装目录下,如果是mac或者linux,则默认安装/etc/redis/redis.conf

    3.2.1 redis的核心配置选项

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

      bind 127.0.0.1

    • 端⼝,默认为6379

      port 6379

    • 是否以守护进程运⾏[这里的配置主要是linux和mac下面需要配置的]

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

      daemonize yes

    • 数据⽂件

      dbfilename dump.rdb

    • 数据⽂件存储路径

      dir .

    • ⽇志⽂件

      logfile "C:/tool/redis/redis-server.log"

    • 数据库,默认有16个

      database 16

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

      slaveof

    3.2.2 Redis的使用

    Redis 是一个高性能的key-value数据格式的内存缓存,NoSQL数据库。

    NOSQL:not only sql,泛指非关系型数据库。

    关系型数据库: (mysql, oracle, sql server, sqlite)

    1. 数据存放在表中,表之间有关系。
    2. 通用的SQL操作语言。
    3. 大部分支持事务。
    

    非关系型数据库[ redis,hadoop,mangoDB]:

    1. 没有数据表的概念,不同的nosql数据库存放数据位置不同。
    2. nosql数据库没有通用的操作语言。
    3. 基本不支持事务。   redis支持简单事务
    

    redis:
    内存型(数据存放在内存中)的非关系型(nosql)key-value(键值存储)数据库,
    支持数据的持久化(注: 数据持久化时将数据存放到文件中,每次启动redis之后会先将文
    件中数据加载到内存),经常用来做缓存(用来缓存一些经常用到的数据,提高读写速度)。

    redis是一款基于CS架构的数据库,所以redis有客户端,也有服务端。

    其中,客户端可以使用python等编程语言,也可以终端命令行工具

    redis客户端连接服务器:

    redis-cli -h `redis服务器ip` -p `redis服务器port`
    

    3.3 redis数据类型

    1. string类型:
    	字符串类型是 Redis 中最为基础的数据存储类型,它在 Redis 中是二进制安全的,也就是byte类型
    	最大容量是512M。
    2. hash类型:
    		hash用于存储对象,对象的结构为属性、值,值的类型为string。
    		key:{
                域:值[这里的值只能是字符串],
                域:值,            
                域:值,
                域:值,
                ...
    		}
    3. list类型:
    		列表的元素类型为string。
    		key:[ 值1,值2,值3..... ]
    4. set类型:
    	无序集合,元素为string类型,元素唯一不重复,没有修改操作。
    	{值1,值4,值3,值5}
    5. zset类型:
    	有序集合,元素为string类型,元素唯一不重复,没有修改操作。
    

    3.4 string

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

    • 设置键值

      set key value

    • 例1:设置键为name值为xiaoming的数据

      set name xiaoming

    • 设置键值及过期时间,以秒为单位

      setex key seconds value

    • 例2:设置键为aa值为aa过期时间为3秒的数据

      setex name 20 xiaoming

    关于设置保存数据的有效期

    # setex 添加保存数据到redis,同时设置有效期
    格式:
    	setex key time value
    # expire 给已有的数据重新设置有效期
    格式:
    	expire key time
    
    • 设置多个键值

      mset key1 value1 key2 value2 ...

    • 例3:设置键为a1值为python、键为a2值为java、键为a3值为c

      mset a1 python a2 java a3 c

    • 追加值

      append key value

    • 例4:向键为a1中追加值haha

      append a1 haha

    • 获取:根据键获取值,如果不存在此键则返回nil

      get key

    • 例5:获取键name的值

      get name

    • 根据多个键获取多个值

      mget key1 key2 ...

    • 例6:获取键a1、a2、a3的值

      mget a1 a2 a3

    3.5 键操作

    • 查找键,参数⽀持正则表达式

      keys pattern

    • 例1:查看所有键

      keys *

    • 例2:查看名称中包含a的键

      keys a*

    • 判断键是否存在,如果存在返回1,不存在返回0

      exists key1

    • 例3:判断键a1是否存在

      exists a1

    • 查看键对应的value的类型

      type key

    • 例4:查看键a1的值类型,为redis⽀持的五种类型中的⼀种

      type a1

    • 删除键及对应的值

      del key1 key2 ...

    • 例5:删除键a2、a3

      del a2 a3

    • 查看有效时间,以秒为单位

      ttl key

    • 例7:查看键bb的有效时间

      ttl bb

    3.6 hash

    结构:

    键key:{
       	域field:值value
    }
    
    • 设置单个属性

      hset key field value

    • 例1:设置键 user的属性namexiaohong

      hset user name xiaohong

    • 设置多个属性

      hmset key field1 value1 field2 value2 ...

    • 例2:设置键u2的属性namexiaohong、属性age11

      hmset u2 name xiaohongage 11

    • 获取指定键所有的属性

      hkeys key

    • 例3:获取键u2的所有属性

      hkeys u2

    • 获取⼀个属性的值

      hget key field

    • 例4:获取键u2属性name的值

      hget u2 name

    • 获取多个属性的值

      hmget key field1 field2 ...

    • 例5:获取键u2属性nameage的值

      hmget u2 name age

    • 获取所有属性的值

      hvals key

    • 例6:获取键u2所有属性的值

      hvals u2

    • 删除属性,属性对应的值会被⼀起删除

      hdel key field1 field2 ...

    • 例7:删除键u2的属性age

      hdel u2 age

    3.7 list

    列表的元素类型为string

    按照插⼊顺序排序

    • 在左侧插⼊数据

      lpush key value1 value2 ...

    • 例1:从键为a1的列表左侧加⼊数据a 、 b 、c

      lpush a1 a b c

    • 在右侧插⼊数据

      rpush key value1 value2 ...

    • 例2:从键为a1的列表右侧加⼊数据0、1

      rpush a1 0 1

    • 在指定元素的前或后插⼊新元素

      linsert key before或after 现有元素 新元素

    • 例3:在键为a1的列表中元素b前加⼊3

      linsert a1 before b 3

    设置指定索引位置的元素值

    • 索引从左侧开始,第⼀个元素为0

    • 索引可以是负数,表示尾部开始计数,如-1表示最后⼀个元素

      lset key index value

    • 例5:修改键为a1的列表中下标为1的元素值为z

      lset a 1 z

    • 删除指定元素

      • 将列表中前count次出现的值为value的元素移除
      • count > 0: 从头往尾移除
      • count < 0: 从尾往头移除
      • count = 0: 移除所有

      lrem key count value

    • 例6.1:向列表a2中加⼊元素a、b、a、b、a、b

      lpush a2 a b a b a b

    • 例6.2:从a2列表右侧开始删除2个b

      lrem a2 -2 b

    • 例6.3:查看列表a2的所有元素

      lrange a2 0 -1

    3.8 set

    • 添加元素

      sadd key member1 member2 ...

    • 例1:向键a3的集合中添加元素zhangsanlisiwangwu

      sadd a3 zhangsan sili wangwu

    • 返回所有的元素

      smembers key

    • 例2:获取键a3的集合中所有元素

      smembers a3

    • 删除指定元素

      srem key value

    • 例3:删除键a3的集合中元素wangwu

      srem a3 wangwu

    3.9 redis的几个站点地址

    中文官网: http://www.redis.cn/

    英文官网:https://redis.io

    参考命令:http://doc.redisfans.com/

    针对redis中的内容扩展

    flushall 清空数据库中的所有数据

    ### 针对各种数据类型它们的特性,使用场景如下:
    
    	# 	字符串string: 用于保存一些项目中的普通数据,只要键值对的都可以保存,例如,保存 session,定时记录状态
    
    
    	# 	哈希hash:用于保存项目中的一些字典数据,但是不能保存多维的字典,例如,商城的购物车
    
    
    	# 	列表list:用于保存项目中的列表数据,但是也不能保存多维的列表,例如,队列,秒杀,医院的挂号
    
    
    	# 	无序集合set:用于保存项目中的一些不能重复的数据,可以用于过滤,例如,投票海选的时候,过滤候选人
    
    
    	# 	有序集合zset:用于保存项目中一些不能重复,但是需要进行排序的数据,分数排行榜.
    
    
  • 相关阅读:
    【今日CV 视觉论文速览】 19 Nov 2018
    【numpy求和】numpy.sum()求和
    【今日CV 视觉论文速览】16 Nov 2018
    【今日CV 视觉论文速览】15 Nov 2018
    poj 2454 Jersey Politics 随机化
    poj 3318 Matrix Multiplication 随机化算法
    hdu 3400 Line belt 三分法
    poj 3301 Texas Trip 三分法
    poj 2976 Dropping tests 0/1分数规划
    poj 3440 Coin Toss 概率问题
  • 原文地址:https://www.cnblogs.com/dengz/p/11837171.html
Copyright © 2011-2022 走看看