5、Redis五大基本数据类型——String类型
一、Redis支持数据类型简介
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
二、String类型
- String类型是Redis最基本的数据类型,String存储是以Key-Value的形式存储的
- string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。
- string类型是Redis最基本的数据类型,一个键最大能存储512MB。
1、GET和SET命令:
#set <key> <value>添加键值对,get <key>询对应键值
127.0.0.1:6379> set k "www.baidu.com" #将www.baidu.com存储到k值
OK
127.0.0.1:6379> get k #查看key值对应的值
"www.baidu.com"
127.0.0.1:6379>
2、key命令(查看所有的key值):
127.0.0.1:6379> keys * #查看所有的key值
1) "age"
2) "k"
3) "name"
127.0.0.1:6379>
3、exists命令(判断某个key是否存在):
#语法:exists key #判断key值是否存在,存在返回1,不存在返回0。
127.0.0.1:6379> keys * #查看所有的key值
1) "age"
2) "k"
3) "name"
127.0.0.1:6379> exists age #判断key值为age是否存在,存在返回1,
(integer) 1
127.0.0.1:6379> exists www #判断key值为www是否存在,不存在返回0
(integer) 0
127.0.0.1:6379>
4、append 将给定的value追加到原值的末尾(类似java里面String的append方法)
#语法 append <key><value>
127.0.0.1:6379> keys * #查看当前库的所有key值
1) "age"
2) "k"
3) "name"
127.0.0.1:6379> get name #获取key为name的value值。
"zhangsan"
127.0.0.1:6379> append name " is my friend" #在zhangsan后面追加 is my friend
(integer) 21
127.0.0.1:6379> get name #再次获取key为name的value值
"zhangsan is my friend"
127.0.0.1:6379>
5、strlen 获得key对应值的长度
127.0.0.1:6379> keys * #获取所有的key值
1) "age"
2) "k"
3) "name"
127.0.0.1:6379> get name
"zhangsan is my friend"
127.0.0.1:6379> strlen name #查看name对应的value的长度,即value值的长度
(integer) 21
127.0.0.1:6379>
6、setnx <key>
<value>
只有在 key 不存在时 设置 key 的值
#语法:etnx <key><value> 只有在 key 不存在时 设置 key 的值
127.0.0.1:6379> keys *
1) "age"
2) "k"
3) "name"
127.0.0.1:6379> get k
"www.baidu.com"
127.0.0.1:6379> setnx k "lisi" #先判断是否存在K,存在返回0,不修改value值
(integer) 0
127.0.0.1:6379> setnx k1 "lisi" #判断是否存在k1,不存在返回1,修改value值为 "lisi"
(integer) 1
127.0.0.1:6379> keys * #查看所有的key,新创建一个k1
1) "age"
2) "k"
3) "k1"
4) "name"
127.0.0.1:6379> get k1 #获取k1的值,验证
"lisi"
127.0.0.1:6379>
7、incr <key>
将 key 中储存的数字值增1 只能对数字值操作,如果为空,新增值为1
127.0.0.1:6379> keys * #当前数据库为空
(empty array)
127.0.0.1:6379> set age 12 #存值
OK
127.0.0.1:6379> incr age #让age加一
(integer) 13 #看到返回结果为13
127.0.0.1:6379> keys *
1) "age"
127.0.0.1:6379> incr name #创建一个新的key值为name,并且value值为1
(integer) 1
127.0.0.1:6379>
原子操作:对incr <key>
实行原子性操作。
所谓原子操作是指不会被线程调度机制打断的操作;这种操作一旦开始,就一直运行到结束,中间不会有任何 context switch (切换到另一个线程)。
(1)在单线程中, 能够在单条指令中完成的操作都可以认为是"原子操作",因为中断只能发生于指令之间。
(2)在多线程中,不能被其它进程(线程)打断的操作就叫原子操作。
原子操作主要得益于redis的单线程。
8、incr <key>
将 key 中储存的数字值减1 只能对数字值操作,如果为空,新增值为-1
127.0.0.1:6379> keys *
1) "age"
127.0.0.1:6379> get age
"13"
127.0.0.1:6379> decr age #年龄减一
(integer) 12
127.0.0.1:6379> decr name #创建一个新的key值为name,并且value值为-1
(integer) -1
127.0.0.1:6379>
9、incrby <key>
<步长> 将 key中存储的数字值增加指定的步长
127.0.0.1:6379> set views 1 #新增一个String
OK
127.0.0.1:6379> incrby views 10 #在原来的基础上增加10
(integer) 11
127.0.0.1:6379> get views
"11"
127.0.0.1:6379> incrby test 10 #若不存在test,新建test,初始值为0加上步长10
(integer) 10
127.0.0.1:6379> get test
"10"
127.0.0.1:6379>
10、decrby <key>
<步长> 将 key中存储的数字值减少指定的步长
127.0.0.1:6379> keys *
1) "views"
2) "test"
127.0.0.1:6379> get views
"11"
127.0.0.1:6379> decrby views 10 #在原来的基础上减少10
(integer) 1
127.0.0.1:6379> decrby ww 10 #初始默认为0,减少10
(integer) -10
127.0.0.1:6379>
11、Mset 命令用于同时设置一个或多个 key-value 对。
127.0.0.1:6379> keys *
(empty array)
127.0.0.1:6379> mset k1 v1 k2 v2 k3 v3 k4 v4 #进行设置多个值
OK
127.0.0.1:6379> keys *
1) "k2"
2) "k4"
3) "k3"
4) "k1"
127.0.0.1:6379>
12、Mget 命令返回所有(一个或多个)给定 key 的值。 如果给定的 key 里面,有某个 key 不存在,那么这个 key 返回特殊值 nil 。
127.0.0.1:6379> keys *
1) "k2"
2) "k4"
3) "k3"
4) "k1"
127.0.0.1:6379> mget k1 k2 k6 #k6不存在,返回null
1) "v1"
2) "v2"
3) (nil)
127.0.0.1:6379>
13、Getrange 命令用于获取存储在指定 key 中字符串的子字符串。字符串的截取范围由 start 和 end 两个偏移量决定(包括 start 和 end 在内)。
127.0.0.1:6379> set name "hello,redis world" #设置字符串
OK
127.0.0.1:6379> get name
"hello,redis world"
127.0.0.1:6379> getrange name 0 5 #截取范围0-5的字符串
"hello,"
127.0.0.1:6379> getrange name 0 -1 #查看字符串,相当于get <key>
"hello,redis world"
127.0.0.1:6379>
14、Setrange 命令用指定的字符串覆盖给定 key 所储存的字符串值,覆盖的位置从偏移量 offset 开始到结束。
127.0.0.1:6379> keys *
1) "name"
127.0.0.1:6379> get name
"hello,redis world"
127.0.0.1:6379> setrange name 12 study #覆盖偏移量之后所有字符串
(integer) 18
127.0.0.1:6379> get name
"hello,redis studyd"
127.0.0.1:6379>
15、命令用于设置指定 key 的值,并返回 key 旧的值。
127.0.0.1:6379> set name zhangsan
OK
127.0.0.1:6379> keys *
1) "name"
127.0.0.1:6379> getset name lisi #获取原来的值,并将新的值存入当前key对应的value。
"zhangsan"
127.0.0.1:6379> get name
"lisi"
127.0.0.1:6379>
5、Redis五大基本数据类型——String类型的更多相关文章
- ***Redis hash是一个string类型的field和value的映射表.它的添加、删除操作都是O(1)(平均)。hash特别适合用于存储对象
http://redis.readthedocs.org/en/latest/hash/hset.html HSET HSET key field value (存一个对象的时候key存) 将哈希 ...
- Redis hash 是一个 string 类型的 field 和 value 的映射表.它的添加、删除操作都是 O(1)(平均)。
2.3 hashes 类型及操作 Redis hash 是一个 string 类型的 field 和 value 的映射表.它的添加.删除操作都是 O(1)(平均).hash 特别适合用于存储对象.相 ...
- redis中关于使用string类型还是hash类型
前篇:最近在做一个将redis中大数据量进行合并缩减优化的工作,其中一项按月将数据进行合并.将一个月的数据放入一个key-value键值对中. 例:p2d20180901-3.p2d20180902- ...
- JS基础_数据类型-String类型
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- redis 模拟jedis 操作string类型数据
一.思路分析 redis数据传输遵循resp协议,只需要按照resp协议并通过socket传递数据到redis服务器即可 resp数据格式: 二.具体实现 package com.ahd.jedis; ...
- laravel-- 在laravel操作redis数据库的数据类型(string、哈希、无序集合、list链表、有序集合)
安装redis和连接redis数据库 在controller头部引入 一.基本使用 public function RedisdDbOne() { // 清空Redis数据库 Redis::flush ...
- Redis和nosql简介,api调用;Redis数据功能(String类型的数据处理);List数据结构(及Java调用处理);Hash数据结构;Set数据结构功能;sortedSet(有序集合)数
1.Redis和nosql简介,api调用 14.1/ nosql介绍 NoSQL:一类新出现的数据库(not only sql),它的特点: 1. 不支持SQL语法 2. 存储结构跟传统关系型数 ...
- redis学习笔记-01 string类型命令
一.set key value set joker 123456 #设定key为joker,value为123456的数据 二.keys * keys * #用于查看该数据库中所有的key值 三.se ...
- redis 五大数据类型之string篇
一: 1:string(字符串) string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value. string类型是二进制安全的.意思是redis ...
随机推荐
- go微服务框架Kratos笔记(一)入门教程
kratos简介 Kratos 一套轻量级 Go 微服务框架,包含大量微服务相关功能及工具 本文基于kratos v2.0.3,windows平台,其他系统平台均可借鉴参考 环境搭建 Golang开发 ...
- tomcat隐藏版本号
默认报错页面信息会暴露出版本号 进入tomcat的lib目录找到catalina.jar文件 unzip catalina.jar之后会多出两个文件夹 进入org/apache/catalina/ut ...
- [bzoj2245]工作安排
由于价格是单调递增的,因此可以直接建立Si条边,流量和价格依次为给定的函数即可(如果价格不递增,可以考虑动态加边等操作) 1 #include<bits/stdc++.h> 2 using ...
- 析构函数与this指针
二.析构函数 1.知识点介绍 析构函数和构造函数一样,也是一种特殊的函数,主要的作用是在对象结束生命周期时,系统自动调用析构函数,来做一些清理工作,比如在对象中有申请内存,那么是需要自己去释放内存的, ...
- ound interface org.elasticsearch.common.bytes.BytesReference, but class was expected
es得版本和本地项目不一致.. 配置es版本,现在使用得是5.2得版本,可是 maven上看到 elasticsearch-rest-high-level-client 最低也得6版本.下载安装高版本 ...
- 学习 DDD 之消化知识!
接触到DDD到现在已经有8个月份了,目前所维护的项目也是基于DDD的思想开发的,从一开始的无从下手,到现在游刃有余,学到不少东西,但是都是一些关键字和零散的知识,同时我也感受到了是因为我对项目越来越熟 ...
- C/C++ Qt TableWidget 表格组件应用
TableWidget 表格结构组件,该组件可以看作是TreeWidget树形组件的高级版,表格组件相比于树结构组件灵活性更高,不仅提供了输出展示二维表格功能,还可以直接对表格元素直接进行编辑与修改操 ...
- 数值分析:幂迭代和PageRank算法(Numpy实现)
1. 幂迭代算法(简称幂法) (1) 占优特征值和占优特征向量 已知方阵\(\bm{A} \in \R^{n \times n}\), \(\bm{A}\)的占优特征值是比\(\bm{A}\)的其他特 ...
- CF1361C Johnny and Megan's Necklace
考虑\(2^x | (u \oplus v)\)的最大\(x\)小于等于\(20\) 这种题目,可以考虑搬到图上做. 我们枚举\(x\)那么对\((u\ mod\ 2^x,v\ mod\ 2^x)\) ...
- python-django 使用class重写视图和模板变量
基于类的视图 c Django模板语法 两个模板引擎如何进行模板文件的查找 模板引擎都找不到的时候,就照模块里面的模板 一旦找到模板不会继续查找了 注意:img_addr是必须和视图里面的变量名字保持 ...