hn-failte's blog hn-failte's blog
首页
  • 前端文章

    • JavaScript
    • Vue
    • React
    • Webpack
    • 混合开发
    • 小程序
  • 学习笔记

    • 《JavaScript教程》笔记
    • 《JavaScript高级程序设计》笔记
    • 《ES6 教程》笔记
    • 《Vue》笔记
    • 《React》笔记
    • 《TypeScript 从零实现 axios》
    • 《Git》学习笔记
    • TypeScript笔记
    • JS设计模式总结笔记
    • 圆角边框锯齿问题
    • 各国语言正则
  • HTML&CSS
  • HTML
  • CSS
  • CSS预处理
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 算法
  • 数据库
  • 操作系统
  • 工具
  • 学习
  • 面试
  • 心情杂货
  • 前端相关
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

hn-failte

前端cv仔
首页
  • 前端文章

    • JavaScript
    • Vue
    • React
    • Webpack
    • 混合开发
    • 小程序
  • 学习笔记

    • 《JavaScript教程》笔记
    • 《JavaScript高级程序设计》笔记
    • 《ES6 教程》笔记
    • 《Vue》笔记
    • 《React》笔记
    • 《TypeScript 从零实现 axios》
    • 《Git》学习笔记
    • TypeScript笔记
    • JS设计模式总结笔记
    • 圆角边框锯齿问题
    • 各国语言正则
  • HTML&CSS
  • HTML
  • CSS
  • CSS预处理
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 算法
  • 数据库
  • 操作系统
  • 工具
  • 学习
  • 面试
  • 心情杂货
  • 前端相关
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 技术文档

  • GitHub技巧

  • Nodejs

  • 博客搭建

  • Algorithm

  • DataBase

    • Redis的基本使用
      • 一、安装与运行
      • 二、redis数据类型
      • 三、指令
        • help指令
        • 通用键指令
        • string类指令
        • hash
        • 数组
        • Set集合
        • Sorted Set 有序集合
      • 四、连接
      • 五、redis事务
      • 六、服务器指令
      • 七、node连接redis
  • OS

  • Tools

  • 技术
  • DataBase
hn-failte
2020-01-03

Redis的基本使用

# Redis的基本使用

最近春节将至,听后端说他们在准备扩容Redis,恰好项目也做得差不多了,也学学Redis的相关知识吧~

Redis是运行在内存中的,即正常电脑的运行内存,因此Redis的运行速度是非常快的,而也由于这个原因,Redis内存不够用需要扩容是常见的问题。

# 一、安装与运行

1、linux:

redis.sh

wget http://download.redis.io/releases/redis-2.8.17.tar.gz
tar xzf redis-2.8.17.tar.gz
cd redis-2.8.17
make
1
2
3
4

新建以上文件执行,即可安装redis。

2、windows:

下载地址:https://github.com/MSOpenTech/redis/releases (opens new window)

运行:redis-server redis.windows.conf

控制台脚手架:redis-cli -h 127.0.0.1 -p 6379 (本机不需要加参数)

# 二、redis数据类型

Redis支持五种数据类型:

1、字符串string

redis的最基本元素,在redis中没有数字,只有字符串

2、哈希hash

存储键值对。

3、列表list

列表类似数组

4、集合set

集合不会带有重复的元素

5、有序集合zset(sorted set)。

有序集合是不允许重复的string类型元素的集合。每个元素都会关联一个double类型的分数,通过分数来进行从小到大的排序。

# 三、指令

# help指令

该指令支持tab键补全

1、查看全部的提示:help

2、指定某类的提示:help @

# 查看string类型的操作
help @string
# 查看有序数组类型的操作
help @sorted_set
#查看常用操作
help @generic
# 查看连接相关的操作
help @connection
1
2
3
4
5
6
7
8

3、指定某个命令的提示:help

# 通用键指令

1、删除:del

2、序列化给定键对应的值:dump

3、检测键是否存在:exsits

4、将给定键添加过期时间(秒):expire

5、指定时间(秒)时键将过期:expireat

6、将给定键添加过期时间(毫秒):pexpire

7、指定时间(毫秒)时键将过期:expireat

8、返回给定模式的key:keys

9、移动当前key到另一个数据库:move

10、移除过期时间设置:persist

11、返回key剩余的过期时间(毫秒):pttl

12、返回key剩余的过期时间(秒)ttl

13、随机返回 一个key:randomkey

14、修改key名:rename

15、当新的键名不存在时才修改key名:renamenx

16、返回key的类型:type

# string类指令

1、获取:get

2、获取子字符串:getrange

getrange str 2 5
1

3、获取多个: mget

mget str1 str2 str3
1

4、设置(存在会覆盖):set

set str "this is a string"
1

5、设置多个: mset

mset str1 "string1" str2 "string2" str3 "string3"
1

6、设置(存在时不会覆盖):setnx

set str "this is a string"
setnx str "string"
1
2

7、设置多个(存在时不会覆盖):msetnx

8、设置值并带过期时间(秒):setex

setex str 3 "this is a string"
1

9、设置值并带过期时间(毫秒):psetex

psetex str 3000 "this is a string"
1

10、获取旧值并设置新值: getset

11、追加值到已存在键的末尾:append

12、获取指定偏移量上的位: getbit

getbit str 3000
1

13、设置指定偏移量上的位: setbit

14、返回字符串长度: strlen

15、存储的数字值增/减1: incr/decr

16、存储的数字值增/减指定量: incrby/decrby

17、存储的数字值增指定浮点量: incrbyfloat

# hash

1、获取:hget

2、获取全部: hgetall

3、获取多个字段:hmget

4、设置(已存在会覆盖):hset

5、设置(已存在不会覆盖):hsetnx

6、设置多个:hmset

7、删除:hdel

8、判断哈希是否存在:hexsits

9、指定哈希增指定量:hincrby

10、指定哈希增指定浮点量:hincrbyfloat

11、获取哈希表的所有key:hkeys

12、获取哈希表的所有value:hvals

13、获取哈希表的长度:hlen

# 数组

1、查看指定序号元素: lindex

2、查看数组长度: llen

3、左/右添加元素(头/尾部):lpush/rpush

4、左/右移除元素(头/尾部):lpop/rpop

5、表存在的情况下,左/右添加一个元素(头/尾部):lpushx/rpushx

6、左/右移除并弹出元素(头/尾部),无元素会阻塞直到超时或执行:lpushx/rpushx timeout

7、移除指定方向的指定匹配元素指定个数: lrem <direction+count>

lrem list -2 hello
1

8、设置指定序号元素的值:lset

9、移除最后一个元素并添加到另一个数组:rpoplpush

10、移除最后一个元素并添加到另一个数组,无元素会阻塞直到超时或执行:brpoplpush

timeout

11、查询指定范围的元素:lrange

12、裁剪指定范围的元素(范围外的会删除): ltrim

# Set集合

1、添加元素:sadd

2、统计集合的元素数量:scard

3、比较并返回差集/交集/并集:sdiff/sinter/sunion

4、指定集合存储比较的差集/交集/并集:sdiffstore/sinterstore/sunionstore

5、是否是集合的元素:sismember

6、查询所有的元素:smembers

7、移动元素到另一个集合:smove

8、返回指定个随机元素:srandmember

9、移除并返回随机一个元素:spop

10、迭代元素:sscan match <derection+index> count

sscan myset 0 match -1 count 2
1

# Sorted Set 有序集合

1、添加成员:zadd

2、集合元素个数:zcard

3、查询指定索引间的键值对数量:zcount

4、查询指定索引间的键集合:zrange

5、给指定键对应的值添加指定增量:zincrby

6、根据给定的值获取键:zscore

7、删除指定键对应的键值对:zrem

8、交集:zinterstore

9、指定一个字符串区间,返回区间中的值个数:zlexcount

zlexcount set1 [a [z
zlexcount set1 - +
1
2

10、通过score区间查询值:zrangebyscore

11、返回指定元素的索引:zrank

12、移除给定字典/排名/分数区间的元素:zremrangebylex/zremrangebyrank/zremrangebyscore

13、获取指定成员的排名:zrevrange

14、获取索引区间/分数区间的元素,分数值从大到小:zrevrank/zrevrankbyscore

15、指定一个set储存多个有序集的并集:zunionstore [key1] [key2]

16、迭代元素:zscan match <derection+index> count

zscan myset 0 match -1 count 2
1

# 四、连接

1、验证密码:auto pwd

2、打印:echo msg

3、查看服务是否执行:ping

4、退出连接:quit

5、切换到指定数据库:select index

# 五、redis事务

1、机制

单个命令的执行是原子性的,但事务的执行是非原子性的。

命令的原子性:操作要么全部执行,要么全不执行 事务的非原子性:使用事务在处理多个命令时,不会因为其中一个失败而取消整个事务

2、指令

标记事务块开始:multi

执行事务块命令:exec

按键监视:watch key1 key2

取消所有监视:unwatch

取消事务:discard

# 六、服务器指令

1、异步执行一个AOF文件重写操作:bgrewriteaof

2、后台异步保存当前数据库的数据到磁盘:bgsave

3、关闭客户端连接(本机可以不接参数):client kill ip:port

4、获取服务器与客户端连接列表:client list

5、获取连接名称:client getname

6、指定时间内终止来自客户端的命令:client pause

7、设置当前连接的名称:client setname <conn_name>

8、获取集群节点的映射数组:cluster slots

9、获取redis命令详情数组:command

10、获取命令总数:command count

11、获取给定命令所有键:command getkeys

12、获取服务器时间

13、获取指定命令描述数组:command info

14、获取指定配置参数的值:config get

15、修改配置文件:config rewrite

16、修改配置参数而无需重启:config set

17、重置info命令中某些统计数据:config resetstat

18、当前数据库key的数量:dbsize

19、获取key的调试信息:debug object key

20、是服务崩溃:debug segfault

21、删所有库:flushall

22、删当前库:flushdb

23、统计各种信息:info

24、lastsave:返回最近一次保存数据的时间

25、实时打印服务器的命令:monitor

26、返回当前角色:role

27、同步保存数据到硬盘:save

28、异步保存数据到硬盘并关闭服务器:shutdown [save/nosave]

29、将当前服务器转变成指定服务器的丛属服务器:slaveof host port

30、管理慢日志:slowlog subcommand

31、用于复制功能的内部命令:sync

# 七、node连接redis

1、安装依赖:npm i redis

2、使用:

const redis = require('redis');

const client = redis.createClient();

client.select(0, () => { console.log('use db 0') })

client.on('error', err => { console.log(err) })

client.set('str_key', 'string', redis.print);

client.hset('hash_table', 'hash_key', 'hash', redis.print);

client.hkeys('hash_table', (err, data) => {
    console.log(data);
    client.quit();
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

其他的指令的用法大同小异,具体请参考github (opens new window)

编辑 (opens new window)
#Redis
上次更新: 2021/07/19, 02:17:53
前端与算法——递推与递归
linux安装nodejs

← 前端与算法——递推与递归 linux安装nodejs→

最近更新
01
safari 兼容问题笔记
01-26
02
electron 日志接入
12-26
03
vue3-template-compile
11-24
更多文章>
Theme by Vdoing | Copyright © 2017-2024 hn-failte | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式