文档章节

Redis数据库的数据类型(String)

webphp
 webphp
发布于 2017/07/26 11:28
字数 1698
阅读 3
收藏 0
点赞 0
评论 0
Redis的数据类型 1、String类型及操作 String是最简单的类型,一个Key对应一个Value,string类型是二进制安全的,Redis的String可以包含任何数据,比如jpg图片或者序列化的对象。 设置key对应的值为string类型的value   set
redis-cli
127.0.0.1:6379> set mykey somevalue
OK
127.0.0.1:6379> get mykey
"somvalue"
如果直接用set设置值,如果没有此下标的值,会添加。如果存在直接覆盖。     Setnx 设置key对应的值为string类型的value,如果key已经存在,返回0,nx表示not exist的意思 //mykey是刚才在set中设置过的 //setnx设置对应的值为string类型的value,如果key已经存在,返回0,设置不成功
127.0.0.1:6379>setnx mykey newvalue
(integer) 0
Setex 设置key对应的值为string类型的value,并指定此键值对应的有效期 例如:添加一个haircolor=red的键值对,并指定有效期为10秒
127.0.0.1:6379>setex mykey 10 red //表示设置mykey的值为red,有效期为10秒
OK
127.0.0.1:6379>get mykey
red
//10秒后
127.0.0.1:6379>get mykey
(nil)
Setrange 设置指定key的value值的子字符串 例如:我们希望将baiping的126邮箱替换为gmail邮箱 setrange name 6 gmail.com //设置键为name的字符串从第6个字符串开始替换为gmail.com,如果替换的字符串没有被替换的字符串长,是不会替换完
127.0.0.1:6379> set mystr baiping@163.com
OK
//相当于把mystr从第7位开始替换为@126.com,从0记起
127.0.0.1:6379> setrange mystr 7 @126.com
(integer) 15
127.0.0.1:6379> get mystr
"baiping@126.com"
//从第7位开始替换,如果从第7位到尾部值的长度大于要替换的值的长度,后面的不修改
127.0.0.1:6379> setrange mystr 7 @qq.com
(integer) 15
127.0.0.1:6379> get mystr
"baiping@qq.comm"
mset 一次设置多个key的值,成功返回ok表示所有的值都设置了,失败返回0表示没有任何值被设置 例如:
//mget命令完成一次性完成多个key-value的对应关系
127.0.0.1:6379>mset key1 value1 key2 value2 key3 value3
OK
msetnx 一次设置多个key的值,成功返回ok表示所有的值设置了,失败返回0表示没有任何值被设置,但是不会覆盖已经存在的key,如果有一个键没有设置成功,所有的健不会设置成功 get 获取key对应的string值,如果key不存在返回nil getset 设置key的值,并返回key的旧值(设置新值,返回旧值)
//设置字符串的值,并返回key的旧值(设置新值,返回旧值)
127.0.0.1:6379> set mystr baidu.com
127.0.0.1:6379> get mystr
"baidu.com"
127.0.0.1:6379> getset mystr sina.com
"baidu.com"
127.0.0.1:6379> get mystr
"sina.com"
getrange 获取key的value值的子字符串 如:getrange name 0 5  获取键名为name的值从第0个字符到第5个字符返回
127.0.0.1:6379> set mystr sina.com
127.0.0.1:6379> get mystr
"sina.com"
127.0.0.1:6379> getrange mystr 1 5
"ina.c"
mget 一次获取多个key的值,如果对应的key不存在则对应返回nil
127.0.0.1:6379> mset key1 value1 key2 value2 key3 value3
OK
127.0.0.1:6379> mget key1 key2 key3
1) "value1"
2) "value2"
3) "value3"
//如果获取的key值没有值返回nil
127.0.0.1:6379> mget key1 key2 key3 key4
1) "value1"
2) "value2"
3) "value3"
4) (nil)
incr 对key的值做加加操作,每次操作只加1,并返回新的值,(适合做访问统计)
//incr命令让值成为了个整数,运行一次incr便+1
127.0.0.1:6379>set counts 100
OK
127.0.0.1:6379>incr counts
(integer) 101
incrby 同incr类似,加指定值,key不存在时会设置key,并认为原来的value是0 如:incrby key 5 //自增加5 incrby key -5 //减去5,设置为负值就可以
//incrby是将值+指定的数
127.0.0.1:6379>set numbers 100
OK
127.0.0.1:6379>get numbers
(integer) 100
127.0.0.1:6379>incrby numbers 50
(integer) 150
127.0.0.1:6379>incrby number -5
(integer) 145
decr 对key的值做减减操作 //decr命令让值成为了个整数,运行一次incr便11
127.0.0.1:6379>set counts 100
OK
127.0.0.1:6379>decr counts
(integer) 99
decrby 同decr类似,减指定值 //decrby是将值+指定的数
127.0.0.1:6379>set numbers 100
OK
127.0.0.1:6379>get numbers
(integer) 100
127.0.0.1:6379>decrby numbers 50
(integer) 50
127.0.0.1:6379>incrby number -5 //这里本身就是减法运算,-5实质运行为--5为正
(integer) 55
append 给指定key的字符串追加value,返回新字符串值的长度 如:append name @163.com //相当于给name原有的值后追加了@163.com
127.0.0.1:6379> set mystr baiping
OK
127.0.0.1:6379> get mystr
"baiping"
127.0.0.1:6379> append mystr @163.com
(integer) 15
127.0.0.1:6379> get mystr
"baiping@163.com"
strlen 取指定key的value值的长度
127.0.0.1:6379> set mystr baiping@163.com
(integer) 15
127.0.0.1:6379> strlen mystr
(integer) 15
2、hashes类型的操作 hash是一个string类型的field和value的映射表,它的添加、删除操作都是0(1)。hash特别适合用于存储对象,相较于将对象的每个字段存成单个string类型,将一个对象存储在         hash类型中会占用更少的内存,并且可以更方便的存取整个对象 hset 设置hash field为指定值,如果key不存在,则先创建 如:hset myhash field1 hello //设置myhash表里的field1的字段的值为hello hset user:001 username baiping //设置user:001表的用户名为baiping
127.0.0.1:6379> hset myhash myname baiping
(integer) 1
127.0.0.1:6379> hget myhash myname
"baipig"
hsetnx 设置hash field为指定值,如果key不存在,则先创建,如果存在返回0 如:hsetnx myhash field "hello"
127.0.0.1:6379> hset myhash myname baiping
(integer) 1
127.0.0.1:6379> hget myhash myname
"baiping"
127.0.0.1:6379> hsetnx myhash myname baiping01
(integer) 0
127.0.0.1:6379> hget myhash myname
"baiping"
127.0.0.1:6379> hsetnx myhash age 30
(integet) 1
127.0.0.1:6379> hget myhash age
"30"
  hmset 同时设置hash的多个field
127.0.0.1:6379> hmset member username baping age 30
OK
hget 获取表中的指定字段的值
127.0.0.1:6379> hmset member username baping age 30
OK
127.0.0.1:6379> hget member username
"baping"
hmget 获取全部指定的hash field
127.0.0.1:6379> hmget myhash myname age
1) "baiping"
2) "30"
hincrby 指定的hash field加上给定值 如:hincrby myhash age 8 //设置myhash表中的age的字段在原基础上加了8
127.0.0.1:6379> hmset myhash myname baiping age 30
OK
127.0.0.1:6379> hmget myhash myname age
1) "baiping"
2) "30"
127.0.0.1:6379> hincrby myhash age 8
(integer) 38
127.0.0.1:6379> hmget myhash myname age
1) "baiping"
2) "38"
hexists 判断hash表是的字段是否存在,存在返回1否则返回0
127.0.0.1:6379> hmset member username baiping age 30
Ok
127.0.0.1:6379> hexists member username
(integer) 1
127.0.0.1:6379> hexists member password // password 没有此字段
(integer) 0
hlen 返回指定hash的field数量
127.0.0.1:6379> hmset member username baiping age 30
OK
127.0.0.1:6379> hlen member
(integer) 2 //两个字段
hdel 删除指定hash的field
127.0.0.1:6379> hset member sex nan
OK
127.0.0.1:6379> hlen member
(integer) 3
127.0.0.1:6379> hdel member sex
(integer) 1
127.0.0.1:6379> hlen member
(integer) 2
hkeys 返回hash的所有field
127.0.0.1:6379> hkeys member
1) "username"
2) "age"
hvals 返回hash的所有value
127.0.0.1:6379> hvals member
1) "baiping"
2) "35"
hgetall 获取某个hash中全部的field及value
127.0.0.1:6379> hgetall member
1) "username"
2) "baiping"
3) "age"
4) "35"
 

© 著作权归作者所有

共有 人打赏支持
webphp
粉丝 1
博文 91
码字总数 91650
作品 0
海淀
程序员
ITOO---“秒杀”选课之Redis序列化

1.我的选课 在进行选课活动中了为了尽量减少客户端和数据库的连接次数,在实现的思路是这样设计的:客户端的请求优先访问Redis缓存空间,如果Redis中没有则从数据库中加载,并添加到Redis中。...

mengdonghui123456 ⋅ 2017/08/06 ⋅ 0

Redis数据类型及应用场景-加米谷大数据

一、 redis 特点 所有数据存储在内存中,高速读写 提供丰富多样的数据类型:string、 hash、 set、 sorted set、bitmap、hyperloglog 提供了 AOF 和 RDB 两种数据的持久化保存方式,保证了 ...

加米谷大数据 ⋅ 04/25 ⋅ 0

Redis 数据类型及应用场景

一、 redis 特点 所有数据存储在内存中,高速读写 提供丰富多样的数据类型:string、 hash、 set、 sorted set、bitmap、hyperloglog 提供了 AOF 和 RDB 两种数据的持久化保存方式,保证了 ...

waterandair ⋅ 2017/11/29 ⋅ 0

Redis常用命令使用总结

redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类...

afreon ⋅ 2015/07/28 ⋅ 0

R语言与Redis的联合使用

分为4个章节。 Redis环境准备rredis函数库rredis基本使用操作rredis使用案例 每一章节,都会分为”文字说明部分”和”代码部分”,保持文字说明与代码的连贯性。 第一章 Redis环境准备 文字说...

openthings ⋅ 2015/07/02 ⋅ 0

Redis学习笔记——初级

原文地址:http://www.cnblogs.com/kaituorensheng/p/5244347.html 阅读目录 1. Redis是什么、特点、优势 2. redis安装(Linux)、启动、退出、设置密码、远程连接 3. Reis key 4. Redis数据...

引鸩怼孑 ⋅ 2016/05/30 ⋅ 0

不会这门技术也想年薪百万?Redis内存数据库知识精讲

     内存数据库   1. Redis产生背景   随着互联网+大数据时代的来临,传统的关系型数据库已经不能满足中大型网站日益增长的访问量和数据量,这个时候就需要一种能够快速存取数据的组...

大数据头条 ⋅ 2017/12/13 ⋅ 0

基于C#的MongoDB数据库开发应用(4)--Redis的安装及使用

在前面介绍了三篇关于MongoDB数据库的开发使用文章,严格来讲这个不能归类于MongoDB数据库开发,不过Redis又有着和MongoDB数据库非常密切的关系,它们两者很接近,Redis主要是内存中的NoSQL...

walb呀 ⋅ 2017/12/04 ⋅ 0

redis-cli 命令总结

Redis常用命令 启动 Redis 服务 src/redis-server或者src/redis-server redis.conf src/redis-server redis.conf 1>log.log 2>errlog.log 1为标准输出,2为错误输出 将 Redis 作为 Linux 服务......

一枚Sir ⋅ 2014/07/25 ⋅ 0

redis介绍、主从配置

NoSQL之redis介绍: remote rerictionry server 是一个基于key-value键值对的持久化数据库存储系统,redis和memcached缓存服务很像。 但是redis支持的数据存储类型更丰富,包括string、list、...

yacai1990 ⋅ 2016/07/11 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

知乎Java数据结构

作者:匿名用户 链接:https://www.zhihu.com/question/35947829/answer/66113038 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 感觉知乎上嘲讽题主简...

颖伙虫 ⋅ 今天 ⋅ 0

Confluence 6 恢复一个站点有关使用站点导出为备份的说明

推荐使用生产备份策略。我们推荐你针对你的生产环境中使用的 Confluence 参考 Production Backup Strategy 页面中的内容进行备份和恢复(这个需要你备份你的数据库和 home 目录)。XML 导出备...

honeymose ⋅ 今天 ⋅ 0

JavaScript零基础入门——(九)JavaScript的函数

JavaScript零基础入门——(九)JavaScript的函数 欢迎回到我们的JavaScript零基础入门,上一节课我们了解了有关JS中数组的相关知识点,不知道大家有没有自己去敲一敲,消化一下?这一节课,...

JandenMa ⋅ 今天 ⋅ 0

火狐浏览器各版本下载及插件httprequest

各版本下载地址:http://ftp.mozilla.org/pub/mozilla.org//firefox/releases/ httprequest插件截至57版本可用

xiaoge2016 ⋅ 今天 ⋅ 0

Docker系列教程28-实战:使用Docker Compose运行ELK

原文:http://www.itmuch.com/docker/28-docker-compose-in-action-elk/,转载请说明出处。 ElasticSearch【存储】 Logtash【日志聚合器】 Kibana【界面】 答案: version: '2'services: ...

周立_ITMuch ⋅ 今天 ⋅ 0

使用快嘉sdkg极速搭建接口模拟系统

在具体项目研发过程中,一旦前后端双方约定好接口,前端和app同事就会希望后台同事可以尽快提供可供对接的接口方便调试,而对后台同事来说定好接口还仅是个开始、设计流程,实现业务逻辑,编...

fastjrun ⋅ 今天 ⋅ 0

PXE/KickStart 无人值守安装

导言 作为中小公司的运维,经常会遇到一些机械式的重复工作,例如:有时公司同时上线几十甚至上百台服务器,而且需要我们在短时间内完成系统安装。 常规的办法有什么? 光盘安装系统 ===> 一...

kangvcar ⋅ 昨天 ⋅ 0

使用Puppeteer撸一个爬虫

Puppeteer是什么 puppeteer是谷歌chrome团队官方开发的一个无界面(Headless)chrome工具。Chrome Headless将成为web应用自动化测试的行业标杆。所以我们很有必要来了解一下它。所谓的无头浏...

小草先森 ⋅ 昨天 ⋅ 0

Java Done Right

* 表示难度较大或理论性较强。 ** 表示难度更大或理论性更强。 【Java语言本身】 基础语法,面向对象,顺序编程,并发编程,网络编程,泛型,注解,lambda(Java8),module(Java9),var(...

风华神使 ⋅ 昨天 ⋅ 0

Linux系统日志

linux 系统日志 /var/log/messages /etc/logrotate.conf 日志切割配置文件 https://my.oschina.net/u/2000675/blog/908189 logrotate 使用详解 dmesg 命令 /var/log/dmesg 日志 last命令,调......

Linux学习笔记 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部