redis(二)-----redis基本数据类型之字符串
Redis的全称是REmote Dictionary Server,它主要提供了5种数据结构:字符串、哈希、列表、集合、有序集合,同时在字符串的基础之上演变 出了位图(Bitmaps)和HyperLogLog两种神奇的“数据结构”,并且随着 LBS(Location Based Service,基于位置服务)的不断发展,Redis3.2版本中 加入有关GEO(地理信息定位)的功能
现在先查看五种数据结构
字符串
字符串类型是Redis最基础的数据结构。首先键都是字符串类型,而且 其他几种数据结构都是在字符串类型基础上构建的,字符串类型的值实际可以是字符串(简单的字符串、复杂的字符串(例如JSON、XML))、数字(整数、浮点数),甚至是二进制(图片、音频、视频),但是值最大不能 超过512MB。
命令
set
set key value [ex seconds] [px milliseconds] [nx|xx]
实例
127.0.0.1:6379> keys *
(empty array)
127.0.0.1:6379> set name l
OK
127.0.0.1:6379> set age 20
OK
127.0.0.1:6379> set sex man
OK
分析
set命令有几个选项: ·ex seconds:为键设置秒级过期时间。 ·px milliseconds:为键设置毫秒级过期时间。 ·nx:键必须不存在,才可以设置成功,用于添加。 ·xx:与nx相反,键必须存在,才可以设置成功,用于更新。
除了set选项,Redis还提供了setex和setnx两个命令
setnx 是和set一样的 set xx是要求建存在才可以set
get
get key
127.0.0.1:6379> get name
"l"
127.0.0.1:6379> get age
"20"
127.0.0.1:6379> get sex
"man"
当get一个空值
127.0.0.1:6379> get null
(nil)
批量设置值,批量获取值
批量设置值
mset key value [key value ...]
批量获取值
mget key [key ...]
实例
127.0.0.1:6379> mset set1 1 set2 2 set3 3
OK
127.0.0.1:6379> mget set1 set2 set3
- "1"
- "2"
- "3"
注意:如果有些键不存在,那么它的值为nil(空)
ex:
127.0.0.1:6379> mget set1 set4 set2 set3
- "1"
- (nil)
- "2"
- "3"
学会使用批量操作,有助于提高业务处理效率,但是要注意的是每次批 量操作所发送的命令数不是无节制的,如果数量过多可能造成Redis阻塞或 者网络拥塞。
计数
incr key
incr命令用于对值做自增操作,返回结果分为三种情况:
·值不是整数,返回错误。
·值是整数,返回自增后的结果。
·键不存在,按照值为0自增,返回结果为1。
例如对一个不存在的键执行incr操作后,返回结果是1:
实例
127.0.0.1:6379> incr age
(integer) 21
127.0.0.1:6379> incr age
(integer) 22
除了incr命令,Redis提供了decr(自减)、incrby(自增指定数字)、 decrby(自减指定数字)、incrbyfloat(自增浮点数)
decr key
incrby key increment
decrby key decrement
incrbyfloat key increment
很多存储系统和编程语言内部使用CAS机制实现计数功能,有一定的 CPU开销,但在Redis中完全不存在这个问题,因为Redis是单线程架构,任何命令到了Redis服务端都要顺序执行。
更多命令
1.追加值 append
append key value
127.0.0.1:6379> get name
"l"
127.0.0.1:6379> APPEND name testappend
(integer) 11
127.0.0.1:6379> get name
"ltestappend"
2.字符串长度 strlen
strlen key
127.0.0.1:6379> STRLEN name
(integer) 11
3.设置并返回原值 getset
getset key value
getset和set一样会设置值,但是不同的是,它同时会返回键原来的值
127.0.0.1:6379> getset test ok
(nil)
127.0.0.1:6379> getset test change
"ok"
4.设置指定位置的字符 setrange
setrange key offeset value
127.0.0.1:6379> set setstrange best
OK
127.0.0.1:6379> get setstrange
"best"
127.0.0.1:6379> setrange setstrange 0 p
(integer) 4
127.0.0.1:6379> get setstrange
"pest"
5.获取部分字符串 getrange
getrange key start end
start和end分别是开始和结束的偏移量,偏移量从0开始计算
127.0.0.1:6379> set setgetrange hello
OK
127.0.0.1:6379> get setgetrange
"hello"
127.0.0.1:6379> getrange setgetrange 0 1
"he"
内部编码
字符串类型的内部编码有3种:
·int:8个字节的长整型。
·embstr:小于等于39个字节的字符串。
·raw:大于39个字节的字符串。
127.0.0.1:6379> set key1 2022
OK
127.0.0.1:6379> set key2 hello,world
OK
127.0.0.1:6379> set key3 this string is greater than 39 isisisisiisisisisisisiisisisisisis(error) ERR syntax error
127.0.0.1:6379> set key3 this string is greater than 39 isisisisiisi(error) ERR syntax error
127.0.0.1:6379> set key3 thisstringisgreaterthanlslslsllslslslsllslslslsllslsls
lsl
OK
127.0.0.1:6379> object encoding key1
"int"
127.0.0.1:6379> object encoding key2
"embstr"
127.0.0.1:6379> object encoding key3
"raw"
127.0.0.1:6379> STRLEN key3
(integer) 57
127.0.0.1:6379> STRLEN key2
(integer) 11
典型使用场景
1.缓存功能
Redis作为缓存层,MySQL作为存储层,绝大部分请求的数据都是从Redis中获取。由于Redis具有支撑高 并发的特性,所以缓存通常能起到加速读写和降低后端压力的作用。
2.计数
许多应用都会使用Redis作为计数的基础工具,它可以实现快速计数、 查询缓存的功能,同时数据可以异步落地到其他数据源
3.共享Session
等等
redis(二)-----redis基本数据类型之字符串的更多相关文章
- redis(二)redis+TCMALLOC高性能的缓存服务器的安装配置
安装 1准备编译环境 yum -y install gcc gcc+ gcc-c++ openssl openssl-devel pcre pcre-devel 2 下载源码包(由于goog ...
- Redis(二):Redis的九大应用场景
毫无疑问,Redis开创了一种新的数据存储思路,使用Redis,我们不用在面对功能单调的数据库时,把精力放在如何把大象放进冰箱这样的问题上,而是利用Redis灵活多变的数据结构和数据操作,为不同的大象 ...
- 跟着大彬读源码 - Redis 5 - 对象和数据类型(上)
相信很多人应该都知道 Redis 有五种数据类型:字符串.列表.哈希.集合和有序集合.但这五种数据类型是什么含义?Redis 的数据又是怎样存储的?今天我们一起来认识下 Redis 这五种数据结构的含 ...
- Redis记录-Redis介绍
Redis是一个开源,高级的键值存储和一个适用的解决方案,用于构建高性能,可扩展的Web应用程序. Redis有三个主要特点,使它优越于其它键值数据存储系统 - Redis将其数据库完全保存在内存中, ...
- Redis系列(二):Redis的数据类型及命令操作
原文链接(转载请注明出处):Redis系列(二):Redis的数据类型及命令操作 Redis 中常用命令 Redis 官方的文档是英文版的,当然网上也有大量的中文翻译版,例如:Redis 命令参考.这 ...
- Redis 数据类型分析 字符串 哈希 列表 集合 有序集合 优缺点 分析 注意事项 存储结构
一.提高Redis使用性能秘诀 KEY尽量少的原则,能放在1个KEY的就放入1个KEY,KEY开销很大尽量减少与Redis发生的交互次数,能批量的就批量,能事务.管道的就事务.管道从业务架构分析确定使 ...
- Redis入门教程(二)— 基本数据类型
阅读以下内容时,手边打开一个redis-cli一起输入,输入命令敲击回车键前在心中想好你的答案,如果结果不合你的预期,请分析原因,使极大地提高学习效率.如果没有条件,每个数据类型后有代码运行结果,供你 ...
- Redis 设计与实现 6:五大数据类型之字符串
前文 Redis 设计与实现 2:Redis 对象 说到,五大数据类型都会封装成 RedisObject. typedef struct redisObject { unsigned type:4; ...
- redis学习教程二《四大数据类型》
redis学习教程二<四大数据类型> 四大数据类型包括:字符串 哈希 列表 集合一 : Redis字符串 Redis字符串命令用于管理Redis中的字符串 ...
随机推荐
- float类型数据精度问题:12.0f-11.9f=0.10000038,"减不尽"为什么?
现在我们就详细剖析一下浮点型运算为什么会造成精度丢失? 1.小数的二进制表示问题 首先我们要搞清楚下面两个问题: (1) 十进制整数如何转化为二进制数 算法很简单.举个例子,11表示成二进制数: 1 ...
- 详谈 Java工厂 --- 静态工厂 【简单工厂模式】
1.前言 什么是工厂模式? 就是为了尽可能将代码的耦合度降低而产生的设计模式. 这篇随笔讲解静态工厂的思路和具体操作. 2.总结 (1)静态工厂又称 简单 工厂模式 ,是最最简单的工厂模式. (2)优 ...
- JWT原理及实现
wt(JSON Web Tokens),是一种开发的行业标准 RFC 7519 ,用于安全的表示双方之间的声明.目前,jwt广泛应用在系统的用户认证方面,特别是现在前后端分离项目. 1. jwt认证流 ...
- vue2.0点击其他任何地方隐藏dom
methods: { handleBodyClick(){ if (绿色区域出来了,要判断点击其他地方就要关闭,这样可以避免绿色区域已经关闭还在操作) { let _con = $(目标区域) if ...
- 【基因组学】maker的安装和注释
本文默认读者有一定的生信基础,没有基础的可以阅读以前的笔记内容. maker作为比较受人认可的基因组注释软件,其流程较为清晰简单. 不知何故,我的conda无法安装maker,故而采用手动安装方式. ...
- [WPF] 用 Effect 实现线条光影效果
1. 前言 几个月前 ChokCoco 大佬发布了一篇文章: CSS 奇技淫巧 | 妙用 drop-shadow 实现线条光影效果 在文章里实现了一个发光的心形线条互相追逐的效果: 现在正好有空就试试 ...
- C#检测外部exe程序弹窗错误,并重启
private void button2_Click(object sender, EventArgs e) { string mainTitle = System.Configuration.Con ...
- 【刷题-LeeetCode】260. Single Number III
Single Number III Given an array of numbers nums, in which exactly two elements appear only once and ...
- 【get√】golang新手理解了一点点gin框架的中间件
1.通过use()来使用多个中间件 router := gin.New() router.Use( middleware1, middleware2) 2.中间件的典型实现 func Logger() ...
- 【体验】在Adobe After Effects CC 2018中使用脚本创建窗口
1.主界面 2.脚本编辑器主界面 3.对象浏览器 在脚本编辑器中按F1 4.写一段 ScriptUI var win = new Window('window', 'my win', [100, 10 ...