Redis数据库基础操作

Stella981
• 阅读 620

MySQL和Redis的区别

"""
redis: 内存数据库(读写快,IO操作少)、非关系型(操作数据方便)
mysql: 硬盘数据库(数据持久化,IO操作多)、关系型(操作数据间关系)

大量访问的临时数据,才有redis数据库更优
"""

redis和memcache的区别

"""
redis: 操作字符串、列表、字典、无序集合、有序集合 | 支持数据持久化(数据丢失可以找回、可以将数据同步给mysql) | 高并发支持
       并且redis数据库中的数据,在电脑重启的之后,数据不会丢失

memcache: 操作字符串 | 不支持数据持久化 | 并发量小
"""

redis操作

"""
基础操作:
    启动服务:redis-server &
    连接数据库:redis-cli
    连接指定数据库:redis-cli -h 127.0.0.1 -p 6379 -n 1
    # redis:默认16个数据库,当不指定数据库的时候,一般会存在第0(1)个数据库中
    # 当指定的数据库,在redis中没有时,默认将数据都放在第0个数据中
    切换数据库:select 1---从当前的数据库切换到另外一个数据库中

数据操作:字符串、列表、字典、无序集合、有序(排序)集合
    有序集合:游戏排行榜
"""

Redis 字符串命令

下表列出了常用的 redis 字符串命令:

序号

命令及描述

1

[SET key value] 设置指定 key 的值

2

[GET key] 获取指定 key 的值。

3

[GETRANGE key start end] 返回 key 中字符串值的子字符

4

[GETSET key value] 将给定 key 的值设为 value ,并返回 key 的旧值(old value)。

5

[GETBIT key offset] 对 key 所储存的字符串值,获取指定偏移量上的位(bit)。

6

[**MGET key1 [key2..]**] 获取所有(一个或多个)给定 key 的值。

7

[SETBIT key offset value] 对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit)。

8

[SETEX key seconds value] 将值 value 关联到 key ,并将 key 的过期时间设为 seconds (以秒为单位)。

9

[SETNX key value] 只有在 key 不存在时设置 key 的值。

10

[SETRANGE key offset value] 用 value 参数覆写给定 key 所储存的字符串值,从偏移量 offset 开始。

11

[STRLEN key] 返回 key 所储存的字符串值的长度。

12

[**MSET key value [key value ...]**] 同时设置一个或多个 key-value 对。

13

[MSETNX key value [key value ...]] 同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。

14

[PSETEX key milliseconds value] 这个命令和 SETEX 命令相似,但它以毫秒为单位设置 key 的生存时间,而不是像 SETEX 命令那样,以秒为单位。

15

[INCR key] 将 key 中储存的数字值增一。

16

[INCRBY key increment] 将 key 所储存的值加上给定的增量值(increment) 。

17

[INCRBYFLOAT key increment] 将 key 所储存的值加上给定的浮点增量值(increment) 。

18

[DECR key] 将 key 中储存的数字值减一。

19

[DECRBY key decrement] key 所储存的值减去给定的减量值(decrement) 。

20

[APPEND key value] 如果 key 已经存在并且是一个字符串, APPEND 命令将指定的 value 追加到该 key 原来值(value)的末尾。

Redis 字典命令

下表列出了 redis hash 基本的相关命令:

序号

命令及描述

1

[**HDEL key field1 [field2]**] 删除一个或多个哈希表字段

2

[HEXISTS key field] 查看哈希表 key 中,指定的字段是否存在。

3

[HGET key field] 获取存储在哈希表中指定字段的值。

4

[HGETALL key] 获取在哈希表中指定 key 的所有字段和值

5

[HINCRBY key field increment] 为哈希表 key 中的指定字段的整数值加上增量 increment 。

6

[HINCRBYFLOAT key field increment] 为哈希表 key 中的指定字段的浮点数值加上增量 increment 。

7

[HKEYS key] 获取所有哈希表中的字段

8

[HLEN key] 获取哈希表中字段的数量

9

[HMGET key field1 [field2]] 获取所有给定字段的值

10

[**HMSET key field1 value1 [field2 value2 ]**] 同时将多个 field-value (域-值)对设置到哈希表 key 中。

11

[HSET key field value] 将哈希表 key 中的字段 field 的值设为 value 。

12

[HSETNX key field value] 只有在字段 field 不存在时,设置哈希表字段的值。

13

[HVALS key] 获取哈希表中所有值

14

HSCAN key cursor [MATCH pattern] [COUNT count] 迭代哈希表中的键值对。

Redis 列表命令

下表列出了列表相关的基本命令:

序号

命令及描述

1

[BLPOP key1 [key2 ] timeout] 移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。

2

[BRPOP key1 [key2 ] timeout] 移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。

3

[BRPOPLPUSH source destination timeout] 从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。

4

[LINDEX key index] 通过索引获取列表中的元素

5

[LINSERT key BEFORE|AFTER pivot value] 在列表的元素前或者后插入元素

6

[LLEN key] 获取列表长度

7

[LPOP key] 移出并获取列表的第一个元素

8

[**LPUSH key value1 [value2]**] 将一个或多个值插入到列表头部

9

[LPUSHX key value] 将一个值插入到已存在的列表头部

10

[LRANGE key start stop] 获取列表指定范围内的元素

11

[LREM key count value] 移除列表元素

12

[LSET key index value] 通过索引设置列表元素的值

13

[LTRIM key start stop] 对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。

14

[RPOP key] 移除列表的最后一个元素,返回值为移除的元素。

15

[RPOPLPUSH source destination] 移除列表的最后一个元素,并将该元素添加到另一个列表并返回

16

[**RPUSH key value1 [value2]**] 在列表中添加一个或多个值

17

[RPUSHX key value] 为已存在的列表添加值

Redis 集合命令

下表列出了 Redis 集合基本命令:

序号

命令及描述

1

[**SADD key member1 [member2]**] 向集合添加一个或多个成员

2

[SCARD key] 获取集合的成员数

3

[SDIFF key1 [key2]] 返回给定所有集合的差集

4

[SDIFFSTORE destination key1 [key2]] 返回给定所有集合的差集并存储在 destination 中

5

[SINTER key1 [key2]] 返回给定所有集合的交集

6

[SINTERSTORE destination key1 [key2]] 返回给定所有集合的交集并存储在 destination 中

7

[SISMEMBER key member] 判断 member 元素是否是集合 key 的成员

8

[SMEMBERS key] 返回集合中的所有成员

9

[SMOVE source destination member] 将 member 元素从 source 集合移动到 destination 集合

10

[SPOP key] 移除并返回集合中的一个随机元素

11

[SRANDMEMBER key [count]] 返回集合中一个或多个随机数

12

[SREM key member1 [member2]] 移除集合中一个或多个成员

13

[SUNION key1 [key2]] 返回所有给定集合的并集

14

[SUNIONSTORE destination key1 [key2]] 所有给定集合的并集存储在 destination 集合中

15

[SSCAN key cursor [MATCH pattern] [COUNT count]] 迭代集合中的元素

Redis 有序集合命令

下表列出了 redis 有序集合的基本命令:

序号

命令及描述

1

[**ZADD key score1 member1 [score2 member2]**] 向有序集合添加一个或多个成员,或者更新已存在成员的分数

2

[ZCARD key] 获取有序集合的成员数

3

[ZCOUNT key min max] 计算在有序集合中指定区间分数的成员数

4

[ZINCRBY key increment member] 有序集合中对指定成员的分数加上增量 increment

5

[ZINTERSTORE destination numkeys key [key ...]] 计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 key 中

6

[ZLEXCOUNT key min max] 在有序集合中计算指定字典区间内成员数量

7

[**ZRANGE key start stop [WITHSCORES]**] 通过索引区间返回有序集合指定区间内的成员

8

[ZRANGEBYLEX key min max [LIMIT offset count]] 通过字典区间返回有序集合的成员

9

[ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT]] 通过分数返回有序集合指定区间内的成员

10

[ZRANK key member] 返回有序集合中指定成员的索引

11

[ZREM key member [member ...]] 移除有序集合中的一个或多个成员

12

[ZREMRANGEBYLEX key min max] 移除有序集合中给定的字典区间的所有成员

13

[ZREMRANGEBYRANK key start stop] 移除有序集合中给定的排名区间的所有成员

14

[ZREMRANGEBYSCORE key min max] 移除有序集合中给定的分数区间的所有成员

15

[**ZREVRANGE key start stop [WITHSCORES]**] 返回有序集中指定区间内的成员,通过索引,分数从高到低

16

[ZREVRANGEBYSCORE key max min [WITHSCORES]] 返回有序集中指定分数区间内的成员,分数从高到低排序

17

[ZREVRANK key member] 返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序

18

[ZSCORE key member] 返回有序集中,成员的分数值

19

[ZUNIONSTORE destination numkeys key [key ...]] 计算给定的一个或多个有序集的并集,并存储在新的 key 中

20

[ZSCAN key cursor [MATCH pattern] [COUNT count]] 迭代有序集合中的元素(包括元素成员和元素分值)

更多命令请参考:https://redis.io/commands

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
待兔 待兔
3个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
Python3:sqlalchemy对mysql数据库操作,非sql语句
Python3:sqlalchemy对mysql数据库操作,非sql语句python3authorlizmdatetime2018020110:00:00coding:utf8'''
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Stella981 Stella981
3年前
Nginx + lua +[memcached,redis]
精品案例1、Nginxluamemcached,redis实现网站灰度发布2、分库分表/基于Leaf组件实现的全球唯一ID(非UUID)3、Redis独立数据监控,实现订单超时操作/MQ死信操作SelectPollEpollReactor模型4、分布式任务调试Quartz应用
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
9个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这