Redis系列---操作命令及数据类型
本章将简单介绍下,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系列---操作命令及数据类型的更多相关文章
- Redis系列(2)之数据类型
Redis系列(2)之数据类型 <Redis系列(1)之安装>中介绍了Redis支持以下几种数据类型,那么本节主要介绍学习下这几种数据类型的基本操作 字符串类型,string 散列类型,h ...
- Redis系列之key操作命令与Redis中的事务详解(六)
序言 本篇主要目的有二: 1.展示所有数据类型中key的所有操作命令,以供大家学习,查阅,更深入的挖掘redis潜力. 2.掌握redis中的事务,让你的数据完整性一致性拥有更优的保障. redis命 ...
- Redis系列(二):Redis的数据类型及命令操作
原文链接(转载请注明出处):Redis系列(二):Redis的数据类型及命令操作 Redis 中常用命令 Redis 官方的文档是英文版的,当然网上也有大量的中文翻译版,例如:Redis 命令参考.这 ...
- Redis的使用--基本数据类型的操作命令和应用场景
echo编辑整理,欢迎转载,转载请声明文章来源.欢迎添加echo微信(微信号:t2421499075)交流学习. 百战不败,依不自称常胜,百败不颓,依能奋力前行.--这才是真正的堪称强大!!! Red ...
- Redis系列-存储篇string主要操作命令
Redis系列-存储篇string主要操作命令 通过上两篇的介绍,我们的redis服务器基本跑起来.db都具有最基本的CRUD功能,我们沿着这个脉络,开始学习redis丰富的数据结构之旅,当然先从最简 ...
- Redis系列-存储篇list主要操作命令
Redis系列-存储篇list主要操作命令小结 在总结list之前,先要弄明白几个跟list相关的概念: 列表:一个从左到右的队列,个人理解更类似于一个栈,常规模式下,先进列表的元素,后出. 表头元素 ...
- Redis系列(二)—— 数据类型及其使用
Redis数据类型及其使用 参考:http://www.cnblogs.com/jackluo/p/3173436.html Redis支持五种数据类型:string(字符串),hash(哈希),li ...
- Redis系列三 Redis数据类型
一 .Redis的五大数据类型 1.String(字符串) string是redis最基本的数据类型,可以理解成与 Memached一模一样的数据类型,一个key对应一个value. string 类 ...
- Redis系列之----Redis的数据类型及使用场景
Redis是一个开源的.高性能的.基于键值对的缓存与存储系统,能够提供多种不同的键值数据类型来适应不同场景下的缓存和存储需求. Redis中所有的数据都存储在内存中,因此读写速度非常快,相 ...
随机推荐
- ElasticSearch专栏
1.es的分布式架构原理(es是如何实现分布式)? elasticsearch设计的理念就是分布式搜索引擎,底层其实还是基于lucene的.核心思想就是在多台机器上启动多个es进程实例,组成了一个es ...
- Atcoder/Topcoder 口胡记录
Atcoder/Topcoder 理论 AC Atcoder的❌游戏示范 兴致勃勃地打开一场 AGC 看 A 题,先 WA 一发,然后花了一年时间 Fix. 看 B 题,啥玩意?这能求? 睡觉觉. e ...
- PHP如何解决表单重复提交
利用session 表单隐藏域中存放session(表单被请求时生成的标记).采用此方法在接收表单数据后,检查此标志值是否存在,先进行删除,然后处理数据; 若不存在,说明已提交过,忽略本次提交. ...
- F#周报2019年第37期
新闻 宣告ML.NET 1.4的预览版及更新模型构建器 .NET展示会:一系列的活动! Octopus入门版:对于小团队免费 宣告.NET Core 3.0预览版9 使用IntelliCode更简单地 ...
- 微信小程序常用的3种弹窗
1. 表示操作成功,文字上方会显示一个表示操作成功的图标. wx.showToast({ title: '操作成功!', icon: 'success', duration: 1500 // 提示窗停 ...
- spring boot 配置文件加密数据库用户名/密码
这篇文章为大家分享spring boot的配置文件properties文件里面使用经过加密的数据库用户名+密码,因为在自己做过的项目中,有这样的需求,尤其是一些大公司,或者说上市公司,是不会把这些敏感 ...
- Vscode for python ide配置
1.文件头添加 自定义代码片段 文件>首选项>用户代码片段 搜索python 添加代码 "HEADER":{ "prefix": "hea ...
- 字符串转化成int
将str转化成int #include<stdio.h> #include<string> int err = 0; int str_to_int(char *s) { lon ...
- 001:photoshop教程
1:添加辅助线:有个位移的坐标系图标:点击标志中,鼠标按着不动.之后拖动到对应的位置. 2:量距离:第一行.第二个图标.直接测量像素. 3:切割图片: 3.1:第三行.第一列:选择切片工具 3.2:之 ...
- Android嵌入式开发初学者的几个注意点
一:首先你必须了解ARM平台 Android 移植与驱动核心开发,当然也可以是X86和其他的平台,不过其他平台的Android智能终端开发并不是很多. Android嵌入式智能操作系统是基于Linux ...