redis-benchmark

是一个压力测试工具,官方自带的性能测试工具。

测试验证

redis基础知识

有16个数据库,默认使用第0个,可以在客户端连接内使用select命令切换数据库。

# 切换数据库select [编号]# 查看所有keykeys *# 清空当前库flushdb# 清空所有库flushall# 查看key是否存在exist key# 移除keymove key# 设置key的过期时间expire key [时间]# 查看key的剩余过期时间ttl key# 查看key的类型type key

redis是单线程的,基于内存操作,cpu不是redis的性能瓶颈,机器的内存和网络带宽影响redis的读写效率,所以使用了单线程来实现。

redis为什么快?


数据在不同位置的读取速度:cpu>内存>硬盘

redis将所有数据放在内存中,且是单线程的。(多线程上下文切换会耗时)。对于内存系统来说,没有上下文切换,效率就是最高的。

五大数据类型


Redis是一种开放源代码(BSD许可)的内存中数据结构存储,用作数据库,缓存和消息代理。它支持数据结构,例如字符串,哈希,列表,集合,带范围查询的排序集,位图,超级日志,带有半径查询和流的地理空间索引。Redis具有内置的复制,Lua脚本,LRU逐出,事务和不同级别的磁盘持久性,并通过Redis Sentinel和Redis Cluster自动分区提供了高可用性。

String


# 设置值set name "hjx"# 获取值get name# 追加字符串,如果当前key不存在,就相当于setappend name ",hello"# 获取key的长度strlen name# 自增1incr key# 自减1decr key # 自增指定长度incrby key [长度]# 自减指定长度decrby key [长度]# 获取key的指定长度 getrange key 0 -1相当于get keygetrange key [start] [end]# 替换指定位置的值setrange key [offset] [value]# 设置过期时间(set with expire)setex name 10 "hjx"# 如果不存在会怎么怎么样(set if not exist),用于redis分布式锁setnx name "hjxhhhh"(未过期时无法覆盖name的内容)# 批量设置keymset k1 v1 k2 v2 k3 v3# 批量获取key值mget k1 k2 k3# 批量不存在就设置key值(以下ex设置失败,因为msetnx时一个原子命令)msetnx k1 v1 k4 v4# key的巧妙设计,相当于(set user:1 {name:"zhansgan",age:23})mset user:1:name "zhangsan" user:1:age:23mget user:1:name user:1:age# 组合命令 getset (如果不存在值,则设置值,如果存在值,则返回值并设置新的值)getset db redis(返回nil)get db (返回redis)getset db mysql (返回redis)get db (返回mysql)

List


# 将一个或多个值,插入list的头部(左。rpush:右)lpush list onelpush list twolpush list threelrange list 0 -1结果"one two three"rpush list fourlrange list 0 -1 结果"one two three four"# 获取list中的值(可设置区间) lrange list 0 -1# 移除list的第一个元素lpop list# 移除list的最后一个元素rpop list# 通过下标获得list的值lindex list 0# 获取当前list的长度Llen list# 移除list中指定个数的valuelrem list 2 one# 修剪rpush list 1rpush list 2rpush list 3rpush list 4ltrim list 1 2 lrange list 0 -1返回:“2”,“3”# 移除list1中的元素到list2中rpoplpush list1 list2# 将list中指定下标的值替换为另外一个值(更新操作)lset list 0 "hjx"# 将某个值插入到list指定元素的前面或后面linsert list before

Set


# 添加元素sadd myset hjx# 查看指定set的所有值smembers myset# 判断值存不存在setsismember myset hjx# 获取set的长度scard myset# 移除元素srem myset hjx# 随机查询元素srandmember myset# 随机查询指定个数的元素srandmember myset 2# 随机删除元素spop myset# 移动某个集合的元素到另一个集合smove myset myset1 hjx# 查看两个集合的差集 sdiff myset myset1# 查看两个集合的交集sinter myset myset1# 查看两个集合的并集sunion myset myset1

Hash


# 设置值hset myhash field1 hjx# 获取值hget myhash field1# 批量设置值hmset myhash field1 hello field2 world# 批量获取值hmget myhash field1 field2# 获取所有值hgetall myhash# 删除某个元素hdel myhash field1# 获取长度hlen myhash# 判断指定值是否存在hexists myhash field1# 获取所有keyhkeys myhash# 获取所有key的值hvals myhash# 不存在则设置hsetnx myhash field1 hjxhjx# 指定增量自增hincrby myhash field1 5# 可用于存储经常变化的结构复杂的对象,如用户信息

Zset


# 添加zadd myset 1 one # 添加一个zadd myset 1 one 2 two 3 three # 添加多个# 获取所有值zrange myset 0 -1# 排序zadd salary 2500 zhangsanzadd salary 5000 lisizadd salary 250 wangwuzrangebyscore salary -inf +inf# 排序带值zrangebyscore salary -inf +inf withscoreszrangebyscore salary -inf 250 withscores# 移除元素zrem salary zhangsan# 获取长度zcard salary# 获取区间元素的个数zcount myset 1 3# 在set的基础上增加了一个排序值。可做排行榜

geospatial地理位置


# 添加地理位置 参数:key 纬度 经度 名称geoadd china:city 39.90 116.40 beijing# 获取指定城市的经纬度geopos china:city beijing# 计算两个位置之间的距离geodist china:city beijing shanghai km  -m:米 -km:千米 -mi:英里 -ft:英尺# 获得当前经纬度指定距离的半径内的城市georadius china:city 110 30 1000 km# 获得当前经纬度指定距离的半径内的城市并输出距离georadius china:city 110 30 1000 km withdist# 获得当前经纬度指定距离的半径内的城市并输出经纬度georadius china:city 110 30 1000 km withcoord# 获得当前经纬度指定距离的半径内指定数量的城市并输出经纬度georadius china:city 110 30 1000 km withcoord count 3# 找出指定城市周围的城市georadiusbymembers china:city beijing 1000 km# 获取当前城市的经纬度的hash值geohash china:city beijing  # 底层是zset,微信附近的人,两人之间的距离,都可以实现

Hyperloglog基数统计


# 创建元素pfadd mykey a b b c d e f # 统计不重复的元素个数pfcount mykey# 合并两个集合pfmerge mykey3 mykey mykey2# 有0.81%的误差,占用内存空间极小,可做网站UV统计

Bitmap位图


# 记录一周打卡setbit sign 0 1setbit sign 1 0setbit sign 2 0setbit sign 3 1setbit sign 4 1setbit sign 5 0setbit sign 6 1# 查看某一周是否打卡getbit sign 3# 统计一周的打卡记录bitcount sign# 位存储 二进制01,统计用户信息,活跃不活跃状态;登陆未登录;打卡未打卡。

redis zset怎么排序_关于Redis(一)相关推荐

  1. redis zset怎么排序_redis(set、zset)类型使用和使用场景

    Redis的数据类型 Redis的数据类型共有五种:string,list,hash,set,zset: String 字符串相对来说做平常,key-value,类似是hashmap的用法: List ...

  2. redis mysql 原子计数器_使用redis的increment()方法实现计数器功能案例

    一直知道redis可以用来实现计数器功能,但是之前没有实际使用过,昨天碰到一个需求:用户扫码当天达到20次即提示:当日扫码次数达到上限! 当时就想到使用redis的递增方法increment()来实现 ...

  3. list redis 怎样做排行_学 Redis 的 7000 字小结!!!

    来源:http://rrd.me/ekrCq Redis 简介 Redis 是完全开源免费的,遵守 BSD 协议,是一个高性能的 key - value 数据库 Redis 与 其他 key - va ...

  4. redis mysql排行榜实现_使用Redis实现实时排行榜

    游戏中存在各种各样的排行榜,比如玩家的等级排名.分数排名等.玩家在排行榜中的名次是其实力的象征,位于榜单前列的玩家在虚拟世界中拥有无尚荣耀,所以名次也就成了核心玩家的追求目标. 一个典型的游戏排行榜包 ...

  5. redis 集合排重_使用Redis的有序集合实现排行榜功能

    游戏中存在各种各样的排行榜,比如玩家的等级排名.分数排名等.玩家在排行榜中的名次是其实力的象征,位于榜单前列的玩家在虚拟世界中拥有无尚荣耀,所以名次也就成了核心玩家的追求目标. 一个典型的游戏排行榜包 ...

  6. redis 读取mysql数据类型_认识Redis与Redis的数据类型

    本文作为Redis的入门教程,旨在让大家对Redis有一个概念性和整体性的认识,并且可以快速上手,为深入Redis打下基础. 文章概要: 1. Redis的介绍 2. Redis与其他数据库的对比 3 ...

  7. redis集合数据过期_关于redis性能问题分析和优化

    一.如何查看Redis性能 info命令输出的数据可以分为10个分类,分别是: server,clients,memory,persistence,stats,replication,cpu,comm ...

  8. redis多服务器共享_基于redis和shedlock实现分布式锁(超简单)

    一.背景 线上部署了两台服务器,通过nginx轮询的方式进行负载均衡.但是这样存在一个问题同一个用户的session共享问题.你或许会说,使用ipHash模式就可以解决session共享的问题,是的确 ...

  9. php redis zset 延迟队列_用PHP+Redis实现延迟任务,实现自动取消订单

    简单定时任务解决方案:使用redis的keyspace notifications(键失效后通知事件) 需要注意此功能是在redis 2.8版本以后推出的,因此你服务器上的reids最少要是2.8版本 ...

  10. redis订阅怎么退出_关于redis,学会这8点就够了

    1,redis是什么 redis是一种支持Key-Value等多种数据结构的存储系统.可用于缓存,事件发布或订阅,高速队列等场景.该数据库使用ANSI C语言编写,支持网络,提供字符串,哈希,列表,队 ...

最新文章

  1. 英特尔双倍功耗换性能,放话12代酷睿i9超越M1 Max,网友:可以煎鸡蛋了?
  2. 专题一:预处理数据(使用sklearn-preprocessing)
  3. 02python 中的线程
  4. 工作组服务器操作系统,工作组服务器操作系统
  5. 不同型号的二极管模块并联_电阻可以串联,为何二极管不适合串联?
  6. Ubuntu 14.04 配置caffe环境
  7. fscapture设置中文_Fscapture是什么软件?有没有功能介绍?
  8. python入门指南全文阅读-Python-3.4-入门指南(官方中文版).pdf
  9. 【一千个论文合集】计算机科学的26个细分领域近年必读论文集合
  10. 测试鼠标宏软件,KINBAS VP900鼠标宏设置软件
  11. 百度 BAE 项目部署
  12. CryEngine架构概览
  13. 第一次创建百度脑图介绍自己,把创建过程分享一下吧,嘿嘿。
  14. 爬虫 - 抓取52论坛帖子列表
  15. 中国MEMS和石英晶体振荡器市场现状研究分析与发展前景预测报告(2022)
  16. ES系列四、ES6.3常用api之文档类api
  17. 金港赢配资简述今天PVC大爆发
  18. Spark SQL:从入门到精通(一)[SparkSQL初体验]
  19. 电脑账户头像怎么删掉_win7系统账户头像删除的具体办法
  20. 英语论文翻译成中文字数变化

热门文章

  1. mfc背景图片覆盖控件问题
  2. 用PHP ping 一个 IP
  3. Elasticsearch安装之安装Java环境
  4. WSS 3.0与MOSS 2007重要更新
  5. java给xyz大小排序_Java Collection - 002 排序
  6. flowable 控制台打印 sql 语句
  7. mac版本 sadptool_EZParkTools下载-智慧停车维护工具 v1.0 官方版 - 安下载
  8. python连续写入数据之间用什么隔开_elasticsearch之使用Python批量写入数据
  9. python全局变量一般没有缩进_python全局变量与局部变量
  10. 善用VS中的Code Snippet来提高开发效率