redis学习之redis基本数据类型以及Jedis
前言:
redis有5种基本数据类型,分别是String(字符串)、Hash(字典)、List(列表)、Set(集合)、Zset(有序集合),下面就分别来说一下这五种数据类型。
数据类型详解:
1、String:
二进制安全的数据类型,类似于Java中的Map,以key、value的形式存储数据。它有如下方法:
①、set和get方法:赋值和获取值
语法:
set key value
get key
例子:
set username tom
get username
②、del方法:删除指定的key
语法:
del key
例子:
del username
③、setnx方法:key不存在时进行设置,如果已有这个key就返回0
语法:
setnx key value
例子:
setnx age 22
如果有age这个key,就返回0,没有就进行设置
④、setex方法:设置有效期
语法:
setex key 有效期 value
例子:
setex color 10 red
设置color的有效期为10秒,10秒后color为nil
⑤、setrange方法:替换字符串
语法:
set key 从第几位开始替换 要替换的字符
例子:
set email 12356789@qq.com setrange email 9 gg
把qq替换成gg
⑥、mset和mget方法:一次设置或获取多个值
语法:
mset key1 value1 key2 value2
mget key1 key2
⑦、incr和decr方法:对某个值进行递增或递减
语法:
incr key
decr key
⑧、incrby和decrby方法:可以设置步长的递增和递减
语法:
incrby key 步长
decrby key 步长
⑨、append方法:追加字符串
语法:
append key 追加的内容
⑩、strlen方法:获取字符串长度
语法:
strlen key
2、Hash:
占用内存更少,方便存储对象。它有如下方法:
①、hset和hget方法:
语法:
官方:hset key field value
自己理解:hset hashname key value
hget hashname key
②、hmset和hmget:批量操作
语法: hmset hashname key1 value1 key2 value2
hmget hashname key1 key2
③、hincrby和hdecrby:集合递增和递减
语法:
hincrby hashname key 步长
hdecrby name key 步长
④、hexists:是否存在key,存在就返回1,不存在返回0
语法:
hexists hashname key
⑤、hlen:返回集合中键的个数
语法:
hlen hashname
⑥、hdel:删除指定的key
语法:
hdel hashname key
⑦、hvals:返回指定hash里的所有value
语法:
hvals hashname
⑧、hgetall:返回hash里所有的key、value
语法:
hgetall hashname
3、List:
链表结构的集合,既可以做栈也可以做队列,它有如下方法:
①、lpush方法:从头部加入元素(栈),先进后出
语法:
lpush key value
例子:
lpush list1 "hello"
lpush list1 "world"
②、lrange方法:取出list中的元素,从start取到end
语法:
lrange key start end
例子:
lrange list1 0 -1
表示从头取到尾
③、rpush方法:从尾部加入元素(队列),先进先出
语法:
rpush key value
例子:
rpush list1 "hello"
④、linsert方法:插入元素
语法:
linsert key before value1 insertvalue
例子:
linsert list1 before "world" "hello"
表示在world前插入一个hello
⑤、lset方法:将指定下标的元素换掉
语法:
lset key 下标 "替换的内容"
例子:
lset list1 0 "haha"
表示把索引为0的元素替换成haha
⑥、lrem方法:删除若干个元素,返回删除的个数
语法:
lrem key 删除的个数 "删除的元素"
例子:
lrem list1 2 "b"
删除两个b
⑦、ltrim方法:保留指定索引范围内的值
语法:
ltrim key 索引1 索引2
例子:
ltrim list1 2 4
表示保留索引2到4的内容
⑧、lpop方法:从list头部删除元素,并返回删除元素
语法:
lpop key
⑨、rpop方法:从list尾部删除元素,并返回删除元素
语法:
rpop key
⑩、rpoplpush方法:删除key1中最后一个元素,然后把这个元素加到key2的第一个位置(key1和key2可以相同)
语法:
rpoplpush key1 key2
①①、lindex方法:返回list中指定索引的值
语法:
lindex key 索引
例子:
lindex list1 1
返回list1中第二个元素
①②llen方法:返回list中元素个数
语法:
llen key
4、Set:
无序不重复集合,通过hashtable实现。有如下方法:
①、sadd方法:添加元素
语法:
官方:sadd key member
自己理解:sadd setname value
例子:
sadd set1 haha
②、srem方法:删除set的元素
语法:
srem setname value
例子:
srem set1 haha
③、spop方法:指定一个set,随机删除其里面的元素并返回
语法:
spop setname
例子:
spop set1
④、sdiff方法:返回set1不同于set2的元素
语法:
sdiff setname1 setname2
⑤、sdiffstore方法:将set1不同于set2的元素存到set3中去
语法:
```sdiffstore setname1 setname2 setname3``‘
⑥、sinter方法:求set1和set2的交集
语法:
sinter setname1 setname2
⑦、sinterstore方法:把set1与set2的交集存到set3中
语法:
sinter setname1 setname2 setname3
⑧、sunIon方法:求set1与set2的并集(I是大写的i)
语法:
sunIon setname1 setname2
⑨、sunIonstore方法:把set1与set2的并集存入set3
语法:
sunIonstore setname1 setname2 setname3
⑩、smove方法:将set1中的某个元素移动到set2中
语法:
smove setname1 setname2 value
例子:
smove set1 set2 ee
表示将set1中的ee移动到set2中
①①、scard方法:查看set里的元素个数
语法:
scard setname
①②、sismember方法:判断某个元素是否为set中元素,是返回1,不是返回0
语法:
sismember setname value
例子:
sismember set1 haha
判断haha是不是set1中的元素
①③、srandmember方法:随机返回set中count个元素
语法:
srandmember setname count
例子:
srandmember set1 3
随机返回set1中3个元素
5、Zset:
和set的区别就是,Zset是有序的。它有如下方法:
①、zadd方法:添加元素,如果元素存在,就更新该元素顺序
语法:
zadd zsetname score value
例子:
zadd zset1 1 haha
表示添加haha这个元素,分数是1
②、zrem方法:删除zset中的元素
语法:
zrem zsetname value
例子:
zrem zset1 haha
③、zincrby和zdecrby方法:指定步长递增或递减
**语法: **
zincrby zsetname 步长 value
zdecrby zsetname 步长 value
④、zrank方法:返回某个元素的排序索引(从小到大排序)
语法:
zrank zsetname value
例子:
zrank zset1 haha
返回haha在zset1中的序号
⑤、zrevrank方法:返回排序索引(从大到小)
语法:
zrevrank zsetname value
⑥、zrangebyscore方法:查找分数在指定区间的数据并返回
语法:
zrangebyscore zsetname score1 score2 withscores
例子:
zrangebyscore zset1 1 4 withscores
返回分数在1到4之间的数据
⑦、zcard方法:返回zset中元素的个数
语法:
zcard zsetname
⑧、zcount方法:返回zset中指定分数区间中元素的个数
语法:
zcount zsetname score1 score2
⑧、zremrangebyrank:根据给定的索引区间删除数据
语法:
zremrangebyrank zsetname index1 index2
⑨、zremrangebyscore:根据给定的分数区间删除元素
语法:
zremrangebyscore zsetname score1 score2
Jedis
Jedis就是Java操作redis的一套API,所有方法都和上面介绍的数据类型方法一样,只需要new一个Jedis实例,传入redis所在的机器的ip以及redis服务的端口,然后用这个实例调方法即可。
总结:
redis有以上5大数据类型,每个类型都有若干的方法,学习时可以类比Java的集合进行学习。
以上内容属于个人学习笔记整理,如果错误,欢迎批评指正!
redis学习之redis基本数据类型以及Jedis相关推荐
- Redis学习之Redis概述及原理、基本操作及持久化
一.Redis介绍 Redis是一个开源的使用ANSI C语言编写.遵守BSD协议.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API. 它通常被称为数据结构服务 ...
- Redis学习笔记~Redis在windows环境下的安装
Redis是一个key-value的存储系统,它最大的特点就是可以将数据序列化到文件中. redis存储在服务器的内存或者文件中,它不是session,不是cookies,它只是个更安全,更稳定,更可 ...
- Redis学习笔记---Redis的主从复制
Redis学习笔记-Redis的主从复制 1.Redis的高可用性 高可用性(High Availability)通常来描述一个系统经过专门的设计,从而减少停工时间,而保持其服务的高度可用性. Rei ...
- Redis学习笔记---Redis的模式订阅与退订
Redis学习笔记-Redis的模式订阅与退订 1.发布订阅简介 发布订阅是一种通信的模式,Redis提供了发布订阅功能,可以用于消息的传输 Redis的发布订阅机制包括三个部分,publisher( ...
- Redis学习笔记---Redis的事务
Redis学习笔记-Redis的事务 1. Redis事务(弱事务)和Mysql事务对比 Atomicity(原子性):构成事务的的所有操作必须是一个逻辑单元,要么全部执行,要么全部不执行. Redi ...
- 【Redis学习】Redis管理命令总结
1.键管理 之前通过对五种数据类型的操作命令的学习发现,Redis在对每种数据进行处理之前,都要先指定该数据的key,然后再指定对该数据进行何种操作. Redis中的key有点类似于Java中的变量名 ...
- 【Redis学习】Redis的安装、管理、适用场合以及使用
1.Redis概述 我们知道,内存是电脑主板上的存储部件,用于存储当前正在使用的数据和程序,CPU可以与内存直接沟通,所以访问速速非常高:而外存数据必须加载到内存以后程序才能使用.如果把CPU当做一个 ...
- Redis学习之Redis概述与安装以及性能测试
Redis入门 概述 Redis是什么 Redis(remote dictionary server)远程字典服务器 是一个开源的使用c语言编写.支持网络.可基于内存亦可持久化的日志型.key-val ...
- Redis学习一Redis的介绍与安装部署
NoSql 介绍 NoSql 是key-value形式存储,和传统的数据库不一样,不一定遵循传统数据库的一些基本要求,比如遵循SQL标准(insert\update\delete\select).AC ...
最新文章
- plsql programming 10 日期和时间戳
- Linux C使用bool类型 出现错误expected '=', ',', ';', 'asm' or '__attribute__'
- 计算机机房消防安全工作应急预案
- python 调用控制台并获取返回结果_Java调用Python脚本并获取返回值
- mysql gui 比较_Navicat for MySQL与MySQL GUI Tools功能比较
- 工作288:根据时间戳处理接口
- matlab同步发电机外特性仿真,基于Matlab-Simulink的虚拟同步发电机控制方法的仿真研究...
- 深度学习助力异常胸部 X 光片检测
- .net VS 全角问题
- ios手机怎么连接adb命令_没有 mac 的福音,windows 下对 ios 进行操作 (类似 android 的 adb 操作)...
- C++ 领域:游戏、HPC、编译器、金融、财务
- Android Studio向项目中导入jar包的方法
- 仿IOS通讯录效果,实现获取手机通讯录、字母排序显示、搜索联系人、拨打电话
- 2020-10-23 集合+序列化+递归+多线程+泛型+枚举+单例+反射小记
- Unity优化翻译官方文档(六) ------ CPU Usage Profiler
- opencv 锐化 java_Java Opencv 实现锐化
- 系统架构设计师-软件水平考试(高级)-论文-架构风格
- 计算byte类型127+1
- 海报设计PSD模板——抖音Glitch故障艺术风格
- 众包知识获取的预算任务调度