zoukankan      html  css  js  c++  java
  • 【redis】Redis学习:redis基础

    一、redis基础
    进入redis命令行:
    redis-cli -h host -p port -a password
    $ redis-cli -h 127.0.0.1 -p 6379 -a "TEST123"
    127.0.0.1:6379>
    127.0.0.1:6379> ping
    PONG
    PING 命令,该命令用于检测 redis 服务是否启动。
    备注:  redis-cli 后面加上 --raw,可以避免中文乱码
     其他命令:
      DEL key,该命令用于在key存在时山存储key
      DUMP key,序列化给定key,并返回被序列化的值
      EXISTS key,检查key是否存在
      EXPIRE key seconds,为key设定过期时间,以秒计
      EXPIRE key milliseconds,为key设定过期时间,以毫秒计
      EXPIREAT key timestamp,EXPIREAT也是为key设置过期时间,不过EXPIREAT接受的时间参数是时间戳
      KEYS pattern,查找所有符合模式(pattern)的值
      MOVE key db,将当前数据库的key移动到给定的数据库db当中
      PERSIST key,移除key的过期时间,key将持久保持
      PTTL key,以毫秒为单位返回key的剩余过期时间
      TTL key,以秒为单位返回key的剩余过期时间
      RANDOMKEY,从当前数据库中随机返回一个key
      RENAME key newkey, 修改 key 的名称
      RENAMENX key newkey, 仅当 newkey 不存在时,将 key 改名为 newkey 
      SCAN cursor [MATCH pattern] [COUNT count], 迭代数据库中的数据库键
      TYPE key, 返回 key 所储存的值的类型
     
    二、redis基础数据结构
    1、字符串(String
    127.0.0.1:6379> set test_key test_value
    OK
    127.0.0.1:6379> get test_key
    "test_value"
     
    2、哈希(Hash)
    Redis hash 是一个 string 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象。
    127.0.0.1:6379> hmset person1 name "test_person1" age 23  sex "female" city "beijing"
    OK
    127.0.0.1:6379> hgetall person1
    1) "name"
    2) "test_person1"
    3) "age"
    4) "23"
    5) "sex"
    6) "female"
    7) "city"
    8) "beijing"
     
    3、列表(List)
    Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)
    127.0.0.1:6379> lpush db mysql
    (integer) 1
    127.0.0.1:6379> lpush db postgres
    (integer) 2
    127.0.0.1:6379> lpush db redis
    (integer) 3
    127.0.0.1:6379> lpush db es
    (integer) 4
    127.0.0.1:6379> lrange db 0 10
    1) "es"
    2) "redis"
    3) "postgres"
    4) "mysql"
     
    4、集合(Set)
    Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
    127.0.0.1:6379> sadd db_set mysql
    (integer) 1
    127.0.0.1:6379> sadd db_set mysql
    (integer) 0
    127.0.0.1:6379> sadd db_set redis
    (integer) 1
    127.0.0.1:6379> sadd db_set redis
    (integer) 0
    127.0.0.1:6379> sadd db_set postgres
    (integer) 1
    127.0.0.1:6379> smembers db_set
    1) "mysql"
    2) "postgres"
    3) "redis"
     
    5、有序集合(sorted set)
    Redis 有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员。
    不同的是每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为集合中的成员进行从小到大的排序。
    有序集合的成员是唯一的,但分数(score)却可以重复。
    127.0.0.1:6379> zadd db_set2 1 mysql
    (integer) 1
    127.0.0.1:6379> zadd db_set2 2 redis
    (integer) 1
    127.0.0.1:6379> zadd db_set2 3 postgres
    (integer) 1
    127.0.0.1:6379> zadd db_set2 4 postgres
    (integer) 0
    127.0.0.1:6379> zadd db_set2 5 postgres
    (integer) 0
    127.0.0.1:6379> zadd db_set2 6 postgres
    (integer) 0
    127.0.0.1:6379> zadd db_set2 2 mongodb
    (integer) 1
    127.0.0.1:6379> zrange db_set2 1 10
    1) "mongodb"
    2) "redis"
    3) "postgres"
    10.136.28.83:6379> zrange db_set2 1 10 withscores
    1) "mongodb"
    2) "2"
    3) "redis"
    4) "2"
    5) "postgres"
    6) "6"
     
    三、redis事务
    Redis 事务可以一次执行多个命令, 并且带有以下三个重要的保证:
    批量操作在发送 EXEC 命令前被放入队列缓存。
    收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余的命令依然被执行。
    在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中。
    一个事务从开始到执行会经历以下三个阶段:
    • 开始事务。
    • 命令入队。
    • 执行事务。
    redis事务以 MULTI 开始一个事务, 然后将多个命令入队到事务中, 最后由 EXEC 命令触发事务, 一并执行事务中的所有命令。
    127.0.0.1:6379> multi
    OK
    127.0.0.1:6379> set name "kate"
    QUEUED
    127.0.0.1:6379> get name
    QUEUED
    127.0.0.1:6379> sadd tag "test"
    QUEUED
    127.0.0.1:6379> sadd tag "redis"
    QUEUED
    127.0.0.1:6379> smembers tag
    QUEUED
    127.0.0.1:6379> exec
    1) OK
    2) "kate"
    3) (integer) 1
    4) (integer) 1
    5) 1) "test"
       2) "redis"
    备注:
    • 单个 Redis 命令的执行是原子性的,但 Redis 没有在事务上增加任何维持原子性的机制,所以 Redis 事务的执行并不是原子性的。事务可以理解为
    • 一个打包的批量执行脚本,但批量指令并非原子化的操作,中间某条指令的失败不会导致前面已做指令的回滚,也不会造成后续的指令不做。
    • MULTI,标记一个事务块的开始。
    • DISCARD , 取消事务,放弃执行事务块内的所有命令
    • EXEC,执行所有模块内的命令
     
    四、redis脚本
    Redis 脚本使用 Lua 解释器来执行脚本
    127.0.0.1:6379> EVAL "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 key1 key2 first second
    1) "key1"
    2) "key2"
    3) "first"
    4) "second"
     
    五、redis管道
    Redis是一种基于客户端-服务端模型以及请求/响应协议的TCP服务。这意味着通常情况下一个请求会遵循以下步骤:客户端向服务端发送一个查询请求,并监听Socket返回,通常是以阻塞模式,等待服务端响应。 服务端处理命令,并将结果返回给客户端。
    redis的管道可以将多个命令打包,一次性的发送给服务器端处理,当命令之间不存在依赖关系时,相比于一条命令一次请求的普通操作方式,管道的操作几乎是对使用者透明的。
     
    六、Redis 数据备份与恢复
    数据备份:
    127.0.0.1:6379> save
    OK
    该命令将在 redis 安装目录中创建dump.rdb文件。 创建 redis 备份文件也可以使用命令 BGSAVE,该命令在后台执行。
    数据恢复:
    只需将备份文件 (dump.rdb) 移动到 redis 安装目录并启动服务即可。
    备注:获取 redis 目录可以使用 CONFIG 命令:CONFIG GET dir
     
    七、redis其他
    获取 redis 服务器的统计信息:INFO
    获取redis的最大连接数:config get maxclients
    连接到 redis 服务的客户端列表: CLIENT LIST
    设置当前连接的名称: CLIENT SETNAME
    关闭客户端连接: CLIENT KILL
    检测redis性能:$ redis-benchmark -n 10000 -q
     
  • 相关阅读:
    High Executions Of Statement "delete from smon_scn_time..."
    centos6.5 vmware报错 (could open /dev/vmmon)
    VMware注册码
    VMware 延长bios等待时间
    centos7 修改引导顺序,默认引导windows,引导等待时间
    windows-linux(centos7)双系统-引导修复
    centos设置开机进入桌面模式或命令行模式
    centos 6 进入桌面后键盘和鼠标无法使用
    VMware ESXi
    js获取<input type='file'>的文件名和后缀名
  • 原文地址:https://www.cnblogs.com/daydayup-lin/p/14286225.html
Copyright © 2011-2022 走看看