Redis简介

  • Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
  • Redis是 NoSQL技术阵营中的一员,它通过多种键值数据类型来适应不同场景下的存储需求,借助一些高层级的接口使用其可以胜任,如缓存、队列系统的不同角色

默认端口:6379

默认数据库:16个

服务器端命令:redis-server

客户端命令:redis-cli

切换数据库:select  0~15  例如:select  2  就是切换到2号数据库

redis每条数据都是⼀个键值对,值的类型分为五种:

  • 字符串string
  • 哈希hash
  • 列表list
  • 集合set
  • 有序集合zset

string类型

保存

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

  • 设置键值

    set key value

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

    set name itcast

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

    setex key seconds value

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

    setex aa 3 aa

  • 设置多个键值

    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

删除

  • 删除键及对应的值

    del key1 key2 ...

  • 例7:删除键a2、a3

    del a2 a3

键命令

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

    keys pattern

  • 例1:查看所有键

    keys *

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

    keys 'a*'

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

    exists key1

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

    exists a1

  • 查看键对应的value的类型

    type key

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

    type a1

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

  • 如果没有指定过期时间则⼀直存在,直到使⽤DEL移除

    expire key seconds

  • 例5:设置键'a1'的过期时间为3秒

    expire a1 3

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

    ttl key

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

    ttl bb

hash类型

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

增加、修改

  • 设置单个属性

    hset key field value

  • 例1:设置键 user的属性name为itheima

    hset user name itheima

  • 设置多个属性

    hmset key field1 value1 field2 value2 ...

  • 例2:设置键u2的属性name为itcast、属性age为11

    hmset u2 name itcast age 11

获取

  • 获取指定键所有的属性

    hkeys key

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

    hkeys u2

  • 获取⼀个属性的值

    hget key field

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

    hget u2 name

  • 获取多个属性的值

    hmget key field1 field2 ...

  • 例5:获取键u2属性'name'、'age的值

    hmget u2 name age

  • 获取所有属性的值

    hvals key

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

    hvals u2

删除

  • 删除整个hash键及值,使⽤del命令
  • 删除属性,属性对应的值会被⼀起删除

    hdel key field1 field2 ...

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

    hdel u2 age

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

获取

  • 返回列表⾥指定范围内的元素

    • start、stop为元素的下标索引
    • 索引从左侧开始,第⼀个元素为0
    • 索引可以是负数,表示从尾部开始计数,如-1表示最后⼀个元素

    lrange key start stop

  • 例4:获取键为'a1'的列表所有元素

    lrange a1 0 -1

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

  • 索引从左侧开始,第⼀个元素为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:查看列表'py12'的所有元素

    lrange a2 0 -1

set类型

  • ⽆序集合
  • 元素为string类型
  • 元素具有唯⼀性,不重复
  • 说明:对于集合没有修改操作

增加

  • 添加元素

    sadd key member1 member2 ...

  • 例1:向键'a3'的集合中添加元素'zhangsan'、'lisi'、'wangwu'

    sadd a3 zhangsan sili wangwu

获取

  • 返回所有的元素

    smembers key

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

    smembers a3

删除

  • 删除指定元素

    srem key

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

    srem a3 wangwu

zset类型

  • sorted set,有序集合
  • 元素为string类型
  • 元素具有唯⼀性,不重复
  • 每个元素都会关联⼀个double类型的score,表示权重,通过权重将元素从⼩到⼤排序
  • 说明:没有修改操作

增加

  • 添加

    zadd key score1 member1 score2 member2 ...

  • 例1:向键'a4'的集合中添加元素'lisi'、'wangwu'、'zhaoliu'、'zhangsan',权重分别为4、5、6、3

    zadd a4 4 lisi 5 wangwu 6 zhaoliu 3 zhangsan

获取

  • 返回指定范围内的元素
  • start、stop为元素的下标索引
  • 索引从左侧开始,第⼀个元素为0
  • 索引可以是负数,表示从尾部开始计数,如-1表示最后⼀个元素

    zrange key start stop

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

    zrange a4 0 -1

  • 返回score值在min和max之间的成员

    zrangebyscore key min max

  • 例3:获取键'a4'的集合中权重值在5和6之间的成员

    zrangebyscore a4 5 6

  • 返回成员member的score值

    zscore key member

  • 例4:获取键'a4'的集合中元素'zhangsan'的权重

    zscore a4 zhangsan

删除

  • 删除指定元素

    zrem key member1 member2 ...

  • 例5:删除集合'a4'中元素'zhangsan'

    zrem a4 zhangsan

  • 删除权重在指定范围的元素

    zremrangebyscore key min max

  • 例6:删除集合'a4'中权重在5、6之间的元素

    zremrangebyscore a4 5 6

redis相关操作&基本命令使用的更多相关文章

  1. redis相关操作

    #连接主机 redis-cli -h 192.168.2.109 -p 6379 #通过密码登录 auth "yourpassword" #存取值 set hello world ...

  2. Redis 相关操作

    1.安装 下载地址:http://www.redis.cn/ 在使用Redis时,开始就遇到了问题,客户端打不开,原因是需要先开启服务端,这需要先配置—— 1.下载好redis安装包,解压安装之后,复 ...

  3. Window下,前后端分离项目,登录权限验证中的,Redis相关操作

    [1]官网下载Redis(解压版) https://redis.io/download [2]切换到目录下打开DOS,执行指令启动Redis redis-server.exe redis.window ...

  4. redis列表操作基本命令

    RPUSH:从列表尾部插入一个元素,RPOP:返回列表最后一个元素并从列表删除LPUSH:从列表头部插入一个元素,LPOP:返回列表第一个元素并从列表删除(没看到命名的介绍,个人理解R就是right, ...

  5. CentOS学习笔记--基本命令--目录的相关操作

    Linux基本命令--目录的相关操作 常见的处理目录的命令吧: cd:变换目录 pwd:显示目前的目录 mkdir:创建一个新的目录 rmdir:删除一个空的目录 cd (变换目录) cd是Chang ...

  6. redis对sorted_set进行的相关操作

    redis对sorted_set(有序集合)类型操作的相关命令以及如何在python使用这些命令 redis对sorted_set(有序集合)类型操作的命令: 命令 语法 概述 返回值 Redis Z ...

  7. redis对set(无序集合)的相关操作

    redis对set类型(无序集合)操作的相关命令以及如何在python使用这些命令 redis对set类型操作的命令: 命令 语法 概述 返回值 Redis Sadd 命令 sadd key memb ...

  8. redis对list进行的相关操作

    redis对list类型进行的相关操作以及如何在python使用 redis对list类型操作的命令: 命令 语法 概述 返回值 Redis Blpop 命令 BLPOP key1 [key2 ] t ...

  9. redis对hash进行的相关操作

    redis对hash类型操作的相关命令以及如何在python使用这些命令 redis对hash类型操作的命令: 命令 语法 概述 返回值 Redis Hdel 命令 hdel key field [f ...

随机推荐

  1. SQL Server ->> 获取服务器名字和SQL SERVER实例名的几种函数

    SELECT @@SERVERNAME as [@@SERVERNAME], SERVERPROPERTY('MachineName') MachineName, SERVERPROPERTY('In ...

  2. Windows环境下使用Nginx搭建负载均衡

    前言 最近没有什么事情,喜欢总结并学习东西!前几天写来一个Session共享,那么我们为什么需要Session共享?因为我们的应用程序分布在多个服务器上,为了合理分配用户的请求,就需要用到负载均衡技术 ...

  3. phpMyAdmin提示“无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装。”

    这是以前学生在使用phpwamp时遇到的一个问题(其他环境或是自己搭建时遇到此问题,解决方式同理) 其实这个问题与PHPWAMP本身无关,是电脑设置的问题,一般正常情况下不会出现这个问题. 现在把学生 ...

  4. August 05th 2017 Week 31st Saturday

    All endings are beginnings, we just don't know it at the time. 所有的结局都是新的开始,只是当时我们不知道而已. Several mont ...

  5. 使用Java语言开发机器学习框架和参数服务器

    https://github.com/wudikua/ps 本项目是我自己动手实现的机器学习训练框架,代码简单,有很多不完善,但是也保留了最小可用功能 通过自己编写这个项目,可以帮助自己入门机器学习 ...

  6. Yahoo!团队经验:网站性能优化的34条黄金法则

    英文原文:http://developer.yahoo.com/performance/rules.html 1.尽量减少HTTP请求次数 (1)合并文件就是通过把所有的脚本放到一个文件中来减少HTT ...

  7. KMP算法模板&&扩展

    很不错的学习链接:https://blog.csdn.net/v_july_v/article/details/7041827 具体思路就看上面的链接就行了,这里只放几个常用的模板 问题描述: 给出字 ...

  8. 报错 Filtered offsite request

    用scrapy框架迭代爬取时报错 scrapy日志: 在 setting.py 文件中 设置 日志 记录等级 LOG_LEVEL= 'DEBUG' LOG_FILE ='log.txt' 观察 scr ...

  9. Guava包学习---Bimap

    Bimap也是Guava中提供的新集合类,别名叫做双向map,就是key->value,value->key,也就是你可以通过key定位value,也可以用value定位key. 这个场景 ...

  10. Mysql分区表及自动创建分区Partition

    Range分区表建表语句如下,其中分区键必须和id构成主键和唯一键 CREATE TABLE `test1` ( `id` char(32) COLLATE utf8mb4_unicode_ci NO ...