redis安装与基本使用

redis安装与基本使用 一、redis在Ubuntu中的安装 1、sudo apt install redis或sudo apt install redis-server
2、将/etc/redis/redis.conf文件移动到一个自主目录中(目的是为了后续集群的部署,也方便对配置文件修改出错时能够重新配置)
例如:我放置在了/root/yjnconfig目录中
3、修改一些配置信息:
将移动后的配置文件打开,修改如下配置信息
redis安装与基本使用
文章图片

redis安装与基本使用
文章图片

3、执行命令 redis-server /root/yjnconfig/redis.conf 以开启我们复制后的redis
4、执行redis-cli 以打开客户端
在客户端中使用ping命令测试连通性,返回PONG即为正常
redis安装与基本使用
文章图片

5、还可以使用ps -ef|grep redis命令查看是否启动成功
redis安装与基本使用
文章图片

6、退出时在redis-cli中输入shutdown,接着输入exit退出
redis安装与基本使用
文章图片

此时,可以看到进程中已经没有了redis
redis安装与基本使用
文章图片

7、使用redis-benchmark进行压力测试
redis安装与基本使用
文章图片

二、redis常用命令 1、select [num] 选择号码为num的数据库(共16个数据库,从0开始)
例 select 1
redis安装与基本使用
文章图片

2、set [name] [value] 设置一个字段名为[name],值为[value]
例 set name alpaca 设置一个字段名为name,值为alpaca
redis安装与基本使用
文章图片

3、get [name] 获取字段名为[name]的值
例 get name
redis安装与基本使用
文章图片

4、exists [name] 判断字段[name]是否存在
例 exists name
redis安装与基本使用
文章图片

5、keys * 列出当前数据库所有字段
redis安装与基本使用
文章图片

6、move [name] 1 将当前数据库中的字段name移动到数据库1中
redis安装与基本使用
文章图片

7、expire [name] [second] 设置name字段的过期时间为second秒
redis安装与基本使用
文章图片

8、使用 ttl [name] 查看字段剩余的时间,-2代表没了
redis安装与基本使用
文章图片

9、使用type [name]查看字段类型
redis安装与基本使用
文章图片

10、清空数据库
flushdb:清空当前数据库
flushall:清空所有数据库
三、redis基本类型 1、String
使用场景:计数器、统计多单位数量[name]:[id]:[field]、粉丝数、对象缓存存储
(1)append [name] "string" 追加在name字段后一个值
redis安装与基本使用
文章图片

(2)strlen [name] 获取字段值长度
redis安装与基本使用
文章图片

(3)incr [name] 字段值自增1 (用于统计文章阅读量)
redis安装与基本使用
文章图片

(4)decr [name] 字段值自减1
redis安装与基本使用
文章图片

(5)支持步长的自增自减
redis安装与基本使用
文章图片

(6)字符串截取 getrange [name] [start] [end] start和end均包含
redis安装与基本使用
文章图片

(7)获取全部的字符串 getrange [name] [start] [end] end为-1
redis安装与基本使用
文章图片

(8)字符串替换 setrange [name] [start] [value]
redis安装与基本使用
文章图片

(9)setex [name] [second] [value] 设置过期的时间
redis安装与基本使用
文章图片

(10) setnx [name] [value] 如果不存在该字段才进行赋值 (常用于分布式锁)
redis安装与基本使用
文章图片

(11) mset ([name] [value] ……) 批量赋值
(12) mget ([name] ……) 批量获取值
redis安装与基本使用
文章图片

(13) msetnx ([name] [value] ……) 在不存在的情况下批量赋值
只有都不存在时才会执行成功,如果一部分存在 一部分不存在则执行失败 (原子性操作)
redis安装与基本使用
文章图片

(14) 对象
set user:1 {name:zhangsan,age:3} 设置一个user:1 对象 值为json字符来保存对象
redis安装与基本使用
文章图片

redis安装与基本使用
文章图片

更巧妙的设计 [name]:[id]:[field]
mset user:1:name zhangsan user:1:age 2
mget user:1:name user:1:age
redis安装与基本使用
文章图片

(15) getset [name] [value] 组合命令:先get再set,返回值为set之前的值
redis安装与基本使用
文章图片

2、List

  • List是一个链表,可以在结点的左右侧插入值
  • 如果key不存在,会创建新链表
  • 如果key存在,则会新增内容
  • 空链表代表不存在
  • 在两边插入或者改动值效率最高
(1)lpush [name] [value] 将value数据从左侧压入栈
(2)lrange [name] [start] [length] 取长度为length的所有值,从栈顶开始
redis安装与基本使用
文章图片

(3)rpush [name] [value] 将value数据从右侧压入栈
redis安装与基本使用
文章图片

(4)lpop [name] 左出栈
(5)rpop [name] 右出栈
redis安装与基本使用
文章图片

(6) lindex [name] [index] 用下标获取数据
redis安装与基本使用
文章图片

(7) llen [name] 获取列表长度
redis安装与基本使用
文章图片

(8) lrem [name] [num] [value] 移除name列表中num个为value的元素,如果在多个相同元素中只移出一个,则被移除的顺序是从左到右
redis安装与基本使用
文章图片

(9)ltrim [name] [start] [end] 截取start到end之间的shujv,其他数据移出
redis安装与基本使用
文章图片

(10)rpoplpush [source] [destination] 将原列表从右侧弹出有一个数据放在一个新列表的左侧
redis安装与基本使用
文章图片

(11)lset [name] [start] [value] 当列表存在时,使用lset在指定位置设置元素
redis安装与基本使用
文章图片

(12)插入:linsert [name] before|after [pivot] [value] 在某一个基准前或后插入值
redis安装与基本使用
文章图片

3、set
set值不能重复
应用:
  • 共同关注的好友
  • 共同爱好
(1)sadd [name] [value] 添加值
redis安装与基本使用
文章图片

(2)smembers [name] 获取全部值
redis安装与基本使用
文章图片

(3)sismember [name] [value] 查看元素是否存在
redis安装与基本使用
文章图片

(4)scard [name] 获取set集合元素的个数
redis安装与基本使用
文章图片

(5)srem [name] [value] 移除指定元素
redis安装与基本使用
文章图片

(6)srandmember [name] [num] 随机抽取num个数据
redis安装与基本使用
文章图片

(7)spop [name] 随机移除一个元素
redis安装与基本使用
文章图片

(8)smove [source] [destination] [value] 将source集合中的元素value移动到destination集合
redis安装与基本使用
文章图片

(9)差集sdiff 交集sinter 并集sunion
redis安装与基本使用
文章图片

4、Hash
map集合
  • 适合数据进程变动
  • 适合存储对象
(1)hset [集合名] [键] [值] (hmset [集合名] [键] [值])
(2)hget [集合名] [键] (hmget [集合名] [键])
redis安装与基本使用
文章图片

(3)hgetall [name] 获取所有键值对
redis安装与基本使用
文章图片

(4)hdel [name] [key] 删除一个map
redis安装与基本使用
文章图片

(5)hlen [name] 获取长度
redis安装与基本使用
文章图片

(6)hexists [name] [key] 判断是否存在
redis安装与基本使用
文章图片

(7)只获取key或value
redis安装与基本使用
文章图片

(8)设置自增 不存在时设置值
redis安装与基本使用
文章图片

5、Zset有序集合
按照权重排序
  • 班级成绩表
  • 工资表
  • 普通消息、重要消息(带权重)
  • 排行榜
(1)zadd [name] [score] [member]
redis安装与基本使用
文章图片

(2)zrangebyscore [name] [最小值] [最大值]
redis安装与基本使用
文章图片

redis安装与基本使用
文章图片

(3)zrange [name] [start] [end] zrevrange
redis安装与基本使用
文章图片

(4)zrem [name] [member] 移除有序集合中的指定元素
redis安装与基本使用
文章图片

(5)zcard [name] 获取长度
redis安装与基本使用
文章图片

(6)zcount [name] [start] [end] 统计满足区间值的个数
redis安装与基本使用
文章图片

6、geospatical 地理位置
实现原理是ZSet集合,因此可以使用ZSet的命令来操作,比如Zrange Zrem
用途:
  • 两地距离
  • 附近的人
(1)geoadd 名称 经度(-180,+180) 纬度(-85.05,+85.05) 名称
redis安装与基本使用
文章图片

(2)geopos 获取指定城市的经纬度
redis安装与基本使用
文章图片

(3)geodist 计算两个城市的直线距离
redis安装与基本使用
文章图片

(4)georadius 以给定经纬度为中心,找出某一半径内的元素
110 30 模拟自身经纬度 1000为半径 km为单位
附近的人
redis安装与基本使用
文章图片

(5)georadiusbymember 根据城市定位找到周边城市
redis安装与基本使用
文章图片

(6)geohash 返回城市的经纬度的字符串表示(11位)
redis安装与基本使用
文章图片

7、Hyperloglog 网站访问量计算(有错误率)
如果追求无误,可以使用set或自定义数据结构
基数
A {1,3,5,7,8,7}
B {1,3,5,7,8}
基数:不重复的元素 = 5 可以接受误差
redis安装与基本使用
文章图片

8、Bitmaps
位存储
  • 统计疫情感染人数
  • 统计用户信息
  • 打卡
  • 活跃度
  • 登陆情况
365天 = 365bit 节省内存
比如:记录周一到周日的打卡
周一0 打卡
周二1 未打卡
周三2 未打卡
...
redis安装与基本使用
文章图片

查看某一天是否打卡
【redis安装与基本使用】redis安装与基本使用
文章图片

统计打卡的天数
redis安装与基本使用
文章图片

欢迎指出错误和不足~
转载请注明出处!
本篇发布在以下博客或网站:
双鱼座羊驼 - 知乎 (zhihu.com)
pisces365的博客_CSDN博客
双鱼座羊驼 - SegmentFault 思否
双鱼座羊驼 的个人主页 - 动态 - 掘金 (juejin.cn)
双鱼座羊驼 - 博客园 (cnblogs.com)

    推荐阅读