本章将简单介绍下,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. Java连载26-方法(语法结构)

    一.方法 1.返回值类型如果不是void,表示这个方法执行结束之后必须返回一个具体的数值,当方法执行结束的时候没有返回任何数值,编译器会报错,怎么返回值呢?并且要求“值”的数据类型必须和“方法的返回值 ...

  2. fdfsdf

    名称:字符串 来源:2019年陕西省选 题目内容 传送门 洛谷(P5392) 题目描述 给出一个长度为$n$的由小写字母组成的字符串$a$,设其中第$i$个字符为$a_i(1≤i≤n)$. 设删掉第$ ...

  3. 2019nc#5

    题号 标题 已通过代码 题解/讨论 通过率 团队的状态 A digits 2 点击查看 1017/2384  通过 B generator 1 点击查看 567/3692  通过 C generato ...

  4. 洛谷-P1414 又是毕业季II -枚举因子

    P1414 又是毕业季II:https://www.luogu.org/problemnew/show/P1414 题意: 给定一个长度为n的数列.要求输出n个数字,每个数字代表从给定数列中最合理地取 ...

  5. 在React中使用Bootstrap

    这几天想在react中用一下bootstrap,尽管有一个适配react的很好的库叫react-bootstrap,但我还是想直接使用bootstrap 可以在react项目中执行以下命令安装boot ...

  6. Oracle数据库之七 多表查询

    七.多表查询 ​ 对于查询在之前已经学过了简单查询.限定查询.查询排序,这些都属于 SQL 的标准语句,而上一章的单行函数,主要功能是为了弥补查询的不足. ​ 而从多表查询开始就正式进入到了复杂查询部 ...

  7. PHP. 02®. Ajax异步处理、常见的响应状态、XMLHttpRequest对象及API、ajax的get/post方法、

    异步对象 a)创建异步对象 b)设置请求的url等参数 c)  发送请求 d)注册时间 e)在注册的事件中获取返回的内容并修改页面显示的内容 布尔类型不能直接用echo输出 常见的响应状态 Ajax概 ...

  8. 3.python之文件操作

    一.文件操作初识 f = open('文件路径', '编码方式', '操作方式') # 注意里面所有内容,需加引号 ” 打开一个文件需要知道的内容有: 文件路径:c:\文件.txt(绝对路径和相对路径 ...

  9. Django+Nginx概念安装和使用–使用Django建立你的第一个网站

    一 前记 最近在使用Django倒腾属于自己的网站,由于以前没有接触过多少这类信息,所以,很多东西都是从零开始学习的.在参考网上的资料时候,发现很多对这方面记录的,很多人都写的不是很清楚,也许我这个新 ...

  10. Android如何管理sqlite

    Android中使用SQlite进行数据操作 标签: sqliteandroid数据库sqlintegerstring 2012-02-28 14:21 8339人阅读 评论(2) 举报  分类: a ...