热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

redis学习(一)redis数据结构和常用命令

redis是基于内存的nosql数据库具有速度快可持久化等优点其中单线程特点也可以作为分布式锁redis存在5大常用数据类型分别为stringlistsethsethashredi

redis 是基于内存的nosql数据库 具有速度快 可持久化等优点 其中单线程特点也可以作为分布式锁
redis 存在5大常用数据类型 分别为 string list set hset hash
redis 针对key的常用命令
keys * 查看所有的key
exists key 查看key是否存在
type key 查看key的类型
del key 删除key
expire key 10 给key设置10秒过期时间
dbsize key的数量
select 切换数据库

sting 是redis基本数据类型 其数据结构为简单字符串每次扩容1M最大支持512M数据 一个key 对应一个value 常用命令
set key value 添加键值对
*NX:当数据库中key不存在时,可以将key-value添加数据库
*XX:当数据库中key存在时,可以将key-value添加数据库,与NX参数互斥
*EX:key的超时秒数
*PX:key的超时毫秒数,与EX互斥

get key 获取key对应的值
append key value 将指定的value 拼接到这个key的结尾
strlen key 获取key的长度
setnx key value 只有key不在时设置value
incr key 将指定的key加一
decr key 将指定的key减一
incrby/decrby key num 将指定的key 加/减 num
getrange key start end 获得值的范围,类似java中的substring,前包,后包
setrange key start value 用 覆写所储存的字符串值,从<起始位置>开始(索引从0开始)。
setex key 过期时间 value 设置一个一个带有过期时间的key
getset key value 以旧换新

list 是简单的字符串列表 其数据结构快速链表quickList 按照插入顺序你可以插入一个数据到头部或者尾部 常用命令
lpush/rpush key value1 value2 value3.... 从左边/右边插入多个值
lpop/rpo key 从左边/右边吐出一个值。值在键在,值光键亡。
rpoplpush key1 key2 从列表右边吐出一个值,插到列表左边。
lrange 按照索引下标获得元素(从左到右)
lrange mylist 0 -1 0左边第一个,-1右边第一个,(0-1表示获取所有)
lindex 按照索引下标获得元素(从左到右)
llen 获得列表长度
linsert before 的后面插入插入值
lrem 从左边删除n个value(从左到右)
lset将列表key下标为index的值替换成value

set 是一个可以自动排重的列表 常用命令
sadd key value1 value2 ... 将一个或多个 member 元素加入到集合 key 中,已经存在的 member 元素将被忽略
smembers key 取出key的所有值
sismenber key value 判断该value 是否是该key的值
scard key 返回该key的集合个数
srem key value1 value2 移除key 中的元素
spop key 随机从该key中吐出一个值
srandmember key n 随机从该key中吐出n个值
smove value把集合中一个值从一个集合移动到另一个集合
sinter 返回两个集合的交集元素。
sunion 返回两个集合的并集元素。
sdiff 返回两个集合的差集元素(key1中的,不包含key2中的)

hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。类似Java里面的Map 常用命令
hset key field value 给key 中的field 赋值value
hget key field 从key 集合中取出 field 的值
hmset key field1 value1 field2 value .. 批量设置值
hexists key field 查看key 中 field 是否存在
hkeys key 列出 key 的所有field
hvals key 列出 key的所有 value
hincrby 为哈希表 key 中的域 field 的值加上增量 1 -1
hsetnx 将哈希表 key 中的域 field 的值设置为 value ,当且仅当域 field 不存在 .

zset与普通集合set非常相似。是一个带有评分没有重复元素的字符串集合
zadd key score1 value1 score2 value2 ... 将一个或多个 member 元素及其 score 值加入到有序集 key 当中。
zrang key start stop [WITHSCORES] 返回有序集 key 中,下标在之间的元素 带WITHSCORES,可以让分数一起和值返回到结果集
zrangebyscore key minmax [withscores] [limit offset count] 返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。有序集成员按 score 值递增(从小到大)次序排列。
zrevrangebyscore key maxmin [withscores] [limit offset count] 同上,改为从大到小排列。
zincrby 为元素的score加上增量
zrem 删除该集合下,指定值的元素
zcount 统计该集合,分数区间内的元素个数
zrank 返回该值在集合中的排名,从0开始。

 



推荐阅读
  • 深入解析Java枚举及其高级特性
    本文详细介绍了Java枚举的概念、语法、使用规则和应用场景,并探讨了其在实际编程中的高级应用。所有相关内容已收录于GitHub仓库[JavaLearningmanual](https://github.com/Ziphtracks/JavaLearningmanual),欢迎Star并持续关注。 ... [详细]
  • 2018-2019学年第六周《Java数据结构与算法》学习总结
    本文总结了2018-2019学年第六周在《Java数据结构与算法》课程中的学习内容,重点介绍了非线性数据结构——树的相关知识及其应用。 ... [详细]
  • 实用正则表达式有哪些
    小编给大家分享一下实用正则表达式有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下 ... [详细]
  • Java项目分层架构设计与实践
    本文探讨了Java项目中应用分层的最佳实践,不仅介绍了常见的三层架构(Controller、Service、DAO),还深入分析了各层的职责划分及优化建议。通过合理的分层设计,可以提高代码的可维护性、扩展性和团队协作效率。 ... [详细]
  • 本文详细介绍了 Java 中 org.geotools.data.shapefile.ShapefileDataStore 类的 getCurrentTypeName() 方法,并提供了多个代码示例,帮助开发者更好地理解和使用该方法。 ... [详细]
  • 本文介绍如何在Spring Boot项目中集成Redis,并通过具体案例展示其配置和使用方法。包括添加依赖、配置连接信息、自定义序列化方式以及实现仓储接口。 ... [详细]
  • 本文详细介绍了优化DB2数据库性能的多种方法,涵盖统计信息更新、缓冲池调整、日志缓冲区配置、应用程序堆大小设置、排序堆参数调整、代理程序管理、锁机制优化、活动应用程序限制、页清除程序配置、I/O服务器数量设定以及编入组提交数调整等方面。通过这些技术手段,可以显著提升数据库的运行效率和响应速度。 ... [详细]
  • Java 实现二维极点算法
    本文介绍了一种使用 Java 编程语言实现的二维极点算法。该算法用于从一组二维坐标中筛选出极点,适用于需要处理几何图形和空间数据的应用场景。文章不仅详细解释了算法的工作原理,还提供了完整的代码示例。 ... [详细]
  • 本文深入探讨了SQL数据库中常见的面试问题,包括如何获取自增字段的当前值、防止SQL注入的方法、游标的作用与使用、索引的形式及其优缺点,以及事务和存储过程的概念。通过详细的解答和示例,帮助读者更好地理解和应对这些技术问题。 ... [详细]
  • 本文介绍如何使用MFC和ADO技术调用SQL Server中的存储过程,以查询指定小区在特定时间段内的通话统计数据。通过用户界面选择小区ID、开始时间和结束时间,系统将计算并展示小时级的通话量、拥塞率及半速率通话比例。 ... [详细]
  • 嵌入式开发环境搭建与文件传输指南
    本文详细介绍了如何为嵌入式应用开发搭建必要的软硬件环境,并提供了通过串口和网线两种方式将文件传输到开发板的具体步骤。适合Linux开发初学者参考。 ... [详细]
  • 本文探讨了在Java中如何正确地将多个不同的数组插入到ArrayList中,避免所有数组在插入后变得相同的问题。我们将分析代码中的问题,并提供解决方案。 ... [详细]
  • 在 Android 开发中,通过 Intent 启动 Activity 或 Service 时,可以使用 putExtra 方法传递数据。接收方可以通过 getIntent().getExtras() 获取这些数据。本文将介绍如何使用 RoboGuice 框架简化这一过程,特别是 @InjectExtra 注解的使用。 ... [详细]
  • 本文介绍如何从字符串中移除大写、小写、特殊、数字和非数字字符,并提供了多种编程语言的实现示例。 ... [详细]
  • 深入解析SpringMVC核心组件:DispatcherServlet的工作原理
    本文详细探讨了SpringMVC的核心组件——DispatcherServlet的运作机制,旨在帮助有一定Java和Spring基础的开发人员理解HTTP请求是如何被映射到Controller并执行的。文章将解答以下问题:1. HTTP请求如何映射到Controller;2. Controller是如何被执行的。 ... [详细]
author-avatar
xiashi
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有