redis 数据操作

redis

  • 定义:

    • redis是开源的,内存数据库,可以用于数据库缓存和消息中间件,支持多种数据类型,字符串,哈希,列表,集合,有序集合等

本地启动 - 常用命令

  • redis-cli

  • redis-server.exe # 带样式 前提你装了

  • /etc/init.d/redis-server stop ---> 停止

  • /etc/init.d/redis-server start ---> 启动

  • /etc/init.d/redis-server restart ---> 重启

远程连接redis数据库

  • redis-cli -h <hostname> -p <port>

数据库切换

  • select 数据库名 注:几号数据库或是新建的数据库名

通过key查询值

  • 通过所key查询所有值

    • 查询所有键

      • keys *

    • 查询包含a的键

      • keys 'a*'

查看键对应的value值的类型

  • type key

值的类型

  • 字符串 string

  • 哈希 hash

  • 列表 list

  • 集合 set

  • 有序集合 zset

string

保存设置键值

  • 设置的值不存在就添加,存在则修改

    • set key value

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

  • setex key 秒数 value

设置多个键值

  • mset key1 value1 key2 value2 ...

追加值

  • append 'key' 'value'

    • 理解为常用append尾部追加

获取值

通过单个key获取值

  • get key

通过多个key获取多个值

  • mget key1 key2...

判断键是否存在

  • 如果存在返回1,不存在返回0

    • exists key1

删除

删除键及对应的值

  • del key1 key2...

    • 可单个,可多个

设置key的过期时间,单位秒

  • expire 'key' 秒数

查看有效时间,单位秒

  • ttl key

hash

  • 用于存储对象,对象的结构为属性、值+

  • 值的类型为string

保存设置属性

设置单个属性

  • hset key field value

    • key的属性field为value

    • 个人理解:字典的值是另一个字典

设置多个属性

  • hmset key field1 value1 field2 value2 ...

获取

获取指定键所有的属性

  • hkeys key

获取指定属性的值

  • hget key field

获取指定属性的多个值

  • hmget key field1 field2 ...

获取key的所有属性

  • hvals key

删除

  • 删除整个hash键及值 , 使用del命令

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

    • hdel key field1 field2 ...

list

  • 列表的元素数据类型string

  • 按插入数据顺序排序

增加

从左侧插入数据

  • lpush key value1 value2 ...

从右侧插入数据

  • rpush key value1 value2 ...

左右侧数据插入理解:
  • 添加完第一个值,在第一个值左侧或右侧向外添加数据元素

在指定元素的前或后插入新元素

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

    • linsert key before 目标元素 新添元素

      • 在目标元素之前添加 新元素

    • linsert key after 目标元素 新添元素

      • 在目标元素之后添加 新元素

     

获取

遍历打印该key的所有值

  • lrange key

    • lrange key 起始下标 结束下标

      • 设置的下标区间 包含该下标 左闭右闭

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

  • lset key index value

    • 例:lset a 1 z

      • 修改key为a的下标为1的元素值为z

删除

删除指定元素

  • lren key count value

    • count>0 从头往尾移除

    • count<0 从尾往头移除

    • count=0 移除所有

set & zset

set

  • 无序集合

  • 元素为string类型

  • 元素具有唯一性,不重复 去重

  • 对于集合没有修改操作

增加

添加元素

  • sadd key member1 member2 ...

  • sadd key 元素1 元素2 ...

 

获取集合所有元素

  • smembers key

 

删除

删除指定元素

  • srem key member1 member2 ...

    • 删除指定key的单个或多个元素

zset

  • sorted set 有序集合

  • 元素为string类型

  • 元素具有唯一性,不重复 去重

  • 每个元素都会关联一个double类型的score,表示权重

  • 注:没有修改操作

增加

添加元素

  • zadd key score1 member1 score2 member2 ...

    • score 值为权重(可以理解为排序的正向顺序,数值从小到大)

    • member1 值为元素 string 类型

获取

获取指定范围内的元素(下标,左闭右闭)

  • zrange key 起始下标 结尾下标

获取score值在min和max之间的元素

  • zrangebyscore key min max

    • min 和 max 值取决于score值

获取元素member的score值

  • zscore key member

    • score 值 可以称为 权值

删除

删除指定元素

  • zrem key memeber1 member2 ...

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

  • zremrangebyscore key min max

事务

  • 命令及描述:

  • 1DISCARD  取消事务,放弃执行事务块内的所有命令。

  • 2EXEC  执行所有事务块内的命令。

  • 3MULTI  标记一个事务块的开始。

  • 4UNWATCH  取消 WATCH 命令对所有 key 的监视。

  • 5[WATCH key key ...]  监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断。

Redis 事务

  • 可以一次执行多个命令, 并且带有以下两个重要的保证:

  • 批量操作在发送 EXEC 命令前被放入队列缓存。

  • 收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余的命令依然被执行。

  • 在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中。

一个事务从开始到执行会经历以下三个阶段:

  • 开始事务。

  • 命令入队。

  • 执行事务。

实例:

redis 127.0.0.1:6379> MULTI
OK

redis 127.0.0.1:6379> SET book-name "Mastering C++ in 21 days"
QUEUED

redis 127.0.0.1:6379> GET book-name
QUEUED

redis 127.0.0.1:6379> SADD tag "C++" "Programming" "Mastering Series"
QUEUED

redis 127.0.0.1:6379> SMEMBERS tag
QUEUED

redis 127.0.0.1:6379> EXEC
1) OK
2) "Mastering C++ in 21 days"
3) (integer) 3
4) 1) "Mastering Series"
2) "C++"
3) "Programming"

posted @ 2019-07-02 20:37  老凯—RGZN  阅读(149)  评论(0编辑  收藏  举报