本章将简单介绍下,Redis里面常用的数据类型以及我们常用到的一些命令,let's go

准备环境:

Redis  详细见上一个章节

我们接下来操作的命令用的是Redis自带的客户端工具,在安装redis的目录下面有个redis-cli的,我们启动它即可,启动之前要先启动redis喔!

[root@VM_0_10_centos bin]# ll
total
-rw-r--r-- root root Sep : dump.rdb
-rwxr-xr-x root root Sep : redis-benchmark
-rwxr-xr-x root root Sep : redis-check-aof
-rwxr-xr-x root root Sep : redis-check-dump
-rwxr-xr-x root root Sep : redis-cli
-rw-r--r-- root root Sep : redis.conf
lrwxrwxrwx root root Sep : redis-sentinel -> redis-server
-rwxr-xr-x root root Sep : redis-server
[root@VM_0_10_centos bin]# ./redis-cli
127.0.0.1:>

1.字符串(String)

String也是Redis最重要最简单,也是我们最常用的一个数据类型

Redis 字符串是字节序列。Redis 字符串是二进制安全的,这意味着他们有一个已知的
长度没有任何特殊字符终止,所以你可以存储任何东西,512 兆为上限

  • set 设置一个值 key value形式
  • get 获取一个键的值
  • incr 让当前键值以 1 的数量递增,并返回递增后的值
  • incrby 可以指定参数一次增加的数值,并返回递增后的值
  • decr 让当前键值以 1 的数量递减 并返回递减后的值
  • decrby 可以指定参数一次递减的数值,并返回递减后的值
  • incrbyfloat 可以递增一个双精度浮点数
  • append 作用是向键值的末尾追加 value。如果键不存在则将该键的值设置为 value。返
  • 回值是追加后字符串的总长度。
  • mget/mset 作用与 get/set 相似,不过 mget/mset 可以同时获得/设置多个键的键值
  • del 根据 key 来删除 value
  • flushdb 清除当前库的所有数据

示例:

redis 127.0.0.1:> SET name kevin
OK
redis 127.0.0.1:> GET name
"kevin" 127.0.0.1:> set num
OK
127.0.0.1:> incr num
(integer)
127.0.0.1:> get num
""
127.0.0.1:> incrby num
(integer)
127.0.0.1:> get num
""
127.0.0.1:> incrbyfloat num
""
127.0.0.1:> get num
""
127.0.0.1:> incrbyfloat num 10.1
"51.1"
127.0.0.1:> get num
"51.1"
127.0.0.1:> set name arebirth
OK
127.0.0.1:> append name ||arebirth
(integer)
127.0.0.1:> get name
"arebirth||arebirth"
127.0.0.1:> mset key val k2 v2
OK
127.0.0.1:> mget key k2
) "val"
) "v2"
127.0.0.1:> del num
(integer)
127.0.0.1:> get num
(nil)
127.0.0.1:> flushdb
OK
127.0.0.1:> get k2
(nil)
127.0.0.1:>

2 Hash(Hash表)

Redis 的哈希是键值对的集合。 Redis 的哈希值是字符串字段和字符串值之间的映射,
因此它们被用来表示对象,看起来很抽象,我们来实际操作下就知道啦!

  • hset 存储一个哈希键值对的集合
  • hset key field value
  • hget 获取一个哈希键的值
  • hget key field
  • hmset 存储一个或多个哈希是键值对的集合
  • hmset key field1 value1 ......fieldN keyN
  • hmget 获取多个指定的键的值
  • hmget key field1 ... fieldN
  • hexists 判断哈希表中的字段名是否存在 如果存在返回 1 否则返回 0
  • hexists key field
  • hdel 删除一个或多个字段
  • hdel key field
  • hgetall 获取一个哈希是键值对的集合
  • hgetall key
  • hvals 只返回字段值
  • hvals key
  • hkeys 只返回字段名
  • hkeys key
  • hlen 返回 key 的 hash 的元素个数
  • hlen key

示例:

127.0.0.1:> hset user username arebirth
(integer)
127.0.0.1:> hget user username
"arebirth"
127.0.0.1:> hmset user pwd age
OK
127.0.0.1:> hmget user pwd age
) ""
) ""
127.0.0.1:> hexists user aa
(integer)
127.0.0.1:> hexists user username
(integer)
127.0.0.1:> hdel user age
(integer)
127.0.0.1:> hget user age
(nil)
127.0.0.1:> hgetall user
) "username"
) "arebirth"
) "pwd"
) ""
127.0.0.1:> hvals user
) "arebirth"
) ""
127.0.0.1:> hkeys user
) "username"
) "pwd"
127.0.0.1:> hlen user
(integer)

3 List 链表

Redis 的链表是简单的字符串列表,排序插入顺序。您可以添加元素到 Redis 的列表的
头部或尾部

跟我们Java中的ListLink很像,双向链表

  • lpush key value 向链表左侧添加
  • rpush key value 向链表右侧添加
  • lpop key 从左边移出一个元素
  • rpop key 从右边移出一个元素
  • llen key 返回链表中元素的个数 相当于关系型数据库中 select count(*)
  • lrange key start end lrange 命令将返回索引从 start 到 stop 之间的所有元素。Redis 的列
  • 表起始索引为 0。
  • lrange 也支持负索引 lrange nn -2 -1 如 -1 表示最右边第一个元素 -2 表示最右边第二
  • 个元素,依次类推。
  • lindex key indexnumber 如果要将列表类型当做数组来用,lindex 命令是必不可少的。
  • lindex 命令用来返回指定索引的元素,索引从 0 开始
  • 如果是负数表示从右边开始计算的索引,最右边元素的索引是-1。
  • Lset key indexnumber value 是另一个通过索引操作列表的命令,它会将索引为 index
  • 的元素赋值为 value

示例:

127.0.0.1:> clear
127.0.0.1:> lpush chain
(integer)
127.0.0.1:> lpush chain
(integer)
127.0.0.1:> lpush chain
(integer)
127.0.0.1:> rpush chain
(integer)
127.0.0.1:> rpush chain
(integer)
127.0.0.1:> rpush chain
(integer)
127.0.0.1:> lrange chain -
) ""
) ""
) ""
) ""
) ""
) ""
127.0.0.1:> lpop chain
""
127.0.0.1:> rpop chain
""
127.0.0.1:> lrange chain -
) ""
) ""
) ""
) ""
127.0.0.1:> llen chain
(integer)
127.0.0.1:> lindex chain
""
127.0.0.1:> lset chain
OK
127.0.0.1:> lindex chain
""

4 Set集合

Redis 的集合是字符串的无序集合。

  • sadd key value 添加一个 string 元素到,key 对应的 set 集合中,成功返回 1,如果元素已经
  • 在集合中返回 0
  • scard key 返回 set 的元素个数,如果 set 是空或者 key 不存在返回 0
  • smembers key 返回 key 对应 set 的所有元素,结果是无序的
  • sismember key value 判断 value 是否在 set 中,存在返回 1,0 表示不存在或者 key 不存
  • srem key value 从 key 对应 set 中移除给定元素,成功返回 1,如果 value 在集合中不存
  • 在或者 key 不存在返回 0

示例:

127.0.0.1:> sadd opr a
(integer)
127.0.0.1:> sadd opr a
(integer)
127.0.0.1:> sadd opr b
(integer)
127.0.0.1:> scard opr
(integer)
127.0.0.1:> smembers opr
) "b"
) "a"
127.0.0.1:> sismember opr a
(integer)
127.0.0.1:> sismember opr b
(integer)
127.0.0.1:> srem opr a
(integer)
127.0.0.1:> smembers opr
) "b"

5 SortedSet( 有序集合)zset

Redis 的有序集合类似于 Redis 的集合,字符串不重复的集合

我们可以自行设置它的排序顺序,通过指定大小值

  • zadd key score value 将一个或多个 value 及其 socre 加入到 set 中
  • zrange key start end 0 和-1 表示从索引为 0 的元素到最后一个元素(同 LRANGE 命令
  • 相似)
  • zrange key 0 -1 withscores 也可以连同 score 一块输出,使用 WITHSCORES 参数
  • zremrangebyscore key start end 可用于范围删除操作

示例:

127.0.0.1:> zadd score  a
(integer)
127.0.0.1:> zadd score 0.1 b
(integer)
127.0.0.1:> zadd score c
(integer)
127.0.0.1:> zrange core -
(empty list or set)
127.0.0.1:> zrange score -
) "b"
) "a"
) "c"
127.0.0.1:> zrange score - withscores
) "b"
) "0.10000000000000001"
) "a"
) ""
) "c"
) ""
127.0.0.1:> zremrangebyscore score
(integer)
127.0.0.1:> zrange score - withscores
(empty list or set)

6 Redis 其它常用命令

  • ping 测试 redis 是否链接 如果已链接返回 PONG
  • echo value 测试 redis 是否链接 如果已链接返回 echo 命令后给定的值
  • keys * 返回所有的 key 可以加*通配
  • exists key 判断 string 类型一个 key 是否存在 如果存在返回 1 否则返回 0
  • expire key time(s) 设置一个 key 的过期时间 单位秒。时间到达后会删除 key 及 value
  • ttl key 查询已设置过期时间的 key 的剩余时间 如果返回-2 表示该键值对已经被删除
  • persist 移除给定 key 的过期时间
  • select dbindex 选择数据库(0-15)
  • move key dbIndex 将当前数据库中的 key 转移到其他数据库中
  • dbsize 返回当前数据库中的 key 的数目
  • info 获取服务器的信息和统计
  • flushdb 删除当前选择的数据库中的 key
  • flushall 删除所有数据库中的所有 key
  • quit 退出连接

示例:

127.0.0.1:> ping
PONG
127.0.0.1:> echo arebirth
"arebirth"
127.0.0.1:> keys *
(empty list or set)
127.0.0.1:> set a a
OK
127.0.0.1:> keys *
) "a"
127.0.0.1:> exists a
(integer)
127.0.0.1:> exists aa
(integer)
127.0.0.1:> expire a
(integer)
127.0.0.1:> ttl a
(integer)
127.0.0.1:> tt a
(error) ERR unknown command 'tt'
127.0.0.1:> ttl a
(integer)
127.0.0.1:> ttl a
(integer)
127.0.0.1:> persist a
(integer)
127.0.0.1:> ttl a
(integer) -
127.0.0.1:> expire a
(integer)
127.0.0.1:> ttl a
(integer)
127.0.0.1:> ttl a
(integer) -
127.0.0.1:> exists a
(integer)
127.0.0.1:> select
OK
127.0.0.1:[]> set aa aa
OK
127.0.0.1:[]> move aa
(integer)
127.0.0.1:[]> dbsize
(integer)
127.0.0.1:[]> select
OK
127.0.0.1:> dbsize
(integer)
127.0.0.1:> keys *
) "aa"
127.0.0.1:> info
# Server
redis_version:3.0.
redis_git_sha1:
redis_git_dirty:
redis_build_id:
redis_mode:standalone
os:Linux 2.6.-642.6..el6.x86_64 x86_64
arch_bits:
multiplexing_api:epoll
gcc_version:4.4.
process_id:
run_id:65435cbd205e87a262b28d0823d004786c69470e
tcp_port:
uptime_in_seconds:
uptime_in_days:
hz:
lru_clock:
config_file:/usr/local/redis/bin/redis.conf # Clients
connected_clients:
client_longest_output_list:
client_biggest_input_buf:
blocked_clients: # Memory
used_memory:
used_memory_human:.22K
used_memory_rss:
used_memory_peak:
used_memory_peak_human:.72K
used_memory_lua:
mem_fragmentation_ratio:3.40
mem_allocator:jemalloc-3.6. # Persistence
loading:
rdb_changes_since_last_save:
rdb_bgsave_in_progress:
rdb_last_save_time:
rdb_last_bgsave_status:ok
rdb_last_bgsave_time_sec:
rdb_current_bgsave_time_sec:-
aof_enabled:
aof_rewrite_in_progress:
aof_rewrite_scheduled:
aof_last_rewrite_time_sec:-
aof_current_rewrite_time_sec:-
aof_last_bgrewrite_status:ok
aof_last_write_status:ok # Stats
total_connections_received:
total_commands_processed:
instantaneous_ops_per_sec:
total_net_input_bytes:
total_net_output_bytes:
instantaneous_input_kbps:0.00
instantaneous_output_kbps:0.00
rejected_connections:
sync_full:
sync_partial_ok:
sync_partial_err:
expired_keys:
evicted_keys:
keyspace_hits:
keyspace_misses:
pubsub_channels:
pubsub_patterns:
latest_fork_usec:
migrate_cached_sockets: # Replication
role:master
connected_slaves:
master_repl_offset:
repl_backlog_active:
repl_backlog_size:
repl_backlog_first_byte_offset:
repl_backlog_histlen: # CPU
used_cpu_sys:424.19
used_cpu_user:202.10
used_cpu_sys_children:0.00
used_cpu_user_children:0.00 # Cluster
cluster_enabled: # Keyspace
db0:keys=,expires=,avg_ttl=
127.0.0.1:> flushdb
OK
127.0.0.1:> flushall
OK
127.0.0.1:> quit

ps:

Redis里面的命令,非常多,但是常用的也差不多就这些,有感兴趣的可以自行百度

Redis系列---操作命令及数据类型的更多相关文章

  1. Redis系列(2)之数据类型

    Redis系列(2)之数据类型 <Redis系列(1)之安装>中介绍了Redis支持以下几种数据类型,那么本节主要介绍学习下这几种数据类型的基本操作 字符串类型,string 散列类型,h ...

  2. Redis系列之key操作命令与Redis中的事务详解(六)

    序言 本篇主要目的有二: 1.展示所有数据类型中key的所有操作命令,以供大家学习,查阅,更深入的挖掘redis潜力. 2.掌握redis中的事务,让你的数据完整性一致性拥有更优的保障. redis命 ...

  3. Redis系列(二):Redis的数据类型及命令操作

    原文链接(转载请注明出处):Redis系列(二):Redis的数据类型及命令操作 Redis 中常用命令 Redis 官方的文档是英文版的,当然网上也有大量的中文翻译版,例如:Redis 命令参考.这 ...

  4. Redis的使用--基本数据类型的操作命令和应用场景

    echo编辑整理,欢迎转载,转载请声明文章来源.欢迎添加echo微信(微信号:t2421499075)交流学习. 百战不败,依不自称常胜,百败不颓,依能奋力前行.--这才是真正的堪称强大!!! Red ...

  5. Redis系列-存储篇string主要操作命令

    Redis系列-存储篇string主要操作命令 通过上两篇的介绍,我们的redis服务器基本跑起来.db都具有最基本的CRUD功能,我们沿着这个脉络,开始学习redis丰富的数据结构之旅,当然先从最简 ...

  6. Redis系列-存储篇list主要操作命令

    Redis系列-存储篇list主要操作命令小结 在总结list之前,先要弄明白几个跟list相关的概念: 列表:一个从左到右的队列,个人理解更类似于一个栈,常规模式下,先进列表的元素,后出. 表头元素 ...

  7. Redis系列(二)—— 数据类型及其使用

    Redis数据类型及其使用 参考:http://www.cnblogs.com/jackluo/p/3173436.html Redis支持五种数据类型:string(字符串),hash(哈希),li ...

  8. Redis系列三 Redis数据类型

    一 .Redis的五大数据类型 1.String(字符串) string是redis最基本的数据类型,可以理解成与 Memached一模一样的数据类型,一个key对应一个value. string 类 ...

  9. Redis系列之----Redis的数据类型及使用场景

       Redis是一个开源的.高性能的.基于键值对的缓存与存储系统,能够提供多种不同的键值数据类型来适应不同场景下的缓存和存储需求.    Redis中所有的数据都存储在内存中,因此读写速度非常快,相 ...

随机推荐

  1. P1613 跑路 倍增思想 + 邻接矩阵

    题意 给定一个有向图,每条边的花费为1.现在有一个空间跑路器,可以走2^k长度的路,只用花1秒的时间.问从1走到n最少的时间.n <= 50, k <= 64. 思路 这道题说是倍增,但是 ...

  2. Codeforces Round #461 (Div. 2)B-Magic Forest+位运算或优雅的暴力

    Magic Forest 题意:就是在1 ~ n中找三个值,满足三角形的要求,同时三个数的异或运算还要为0: , where  denotes the bitwise xor of integers  ...

  3. poj 1177 Picture(线段树周长并)

    题目链接:http://poj.org/problem?id=1177 题意:给你n个矩形问你重叠后外边缘总共多长. 周长并与面积并很像只不过是处理的时候是   增加的周长=abs(上一次的线段的长度 ...

  4. 工程点点app爬虫和sign算法破解

    这世界真的什么人都有,哎,继续分析. 通过对工程点点的逆向和抓包分析,发现工程点点需要x-sign和token验证. this.b.a(aVar.b("Accept", " ...

  5. php preg_match pcre回溯绕过

    原理需要知识:正则NFA回溯原理,php的pcre.backtrack_limit设置. 正则NFA回溯原理正则表达式是一个可以被"有限状态自动机"接受的语言类."有限状 ...

  6. java学习笔记之基础篇

    java选择语句之switch   //switch可以用于等值判断 switch (e) //int ,或则可以自动转化成int 的类型,(byte char short)枚举jdk 7中可以防止字 ...

  7. JSP标签介绍

    JSP标签也称之为Jsp Action(JSP动作)元素,它用于在Jsp页面中提供业务逻辑功能,避免在JSP页面中直接编写java代码,造成jsp页面难以维护. jsp的常用标签有以下三个 <j ...

  8. 史上最全Docker环境安装指南-让安装docker简单到爆

    一.思考❓❔ 1.什么是Docker? 装应用的容器 开发.测试.运维都偏爱的容器化技术 轻量级 扩展性 一次构建.多次分享.随处运行 2.安装Docker难不难? So easy! 此文看过之后,读 ...

  9. JSP中的两种跳转方式分别是什么,有什么区别?

    forward跳转:<jsp:forward page ="跳转页面地址"> response跳转:response.sendRedirect("跳转页面地址 ...

  10. Ajax发送请求的四个步骤

    1.创建XMLHttpRequest let xhr=new XMLHttpRequest; 2.连接服务器 xhr.open("get","goods.json&quo ...