05 redis(进阶)

redis

阶段一、认识redis

1、什么是redis

Redis是由意大利人Salvatore Sanfilippo(网名:antirez)开发的一款内存高速缓存数据库。Redis全称为:RemoteDictionary Server,该软件使用C语言编写,Redis是一个key-value存储系统,它支持丰富的数据类型,如:string、list、set、zset(sorted set)、hash。

2、redis特点:

快速响应,数据量小

Redis以内存作为数据存储介质,所以读写数据的效率极高,远远超过数据库。

3、Redis应用场景:

因为Redis交换数据快,所以在服务器中常用来存储一些需要频繁调取的数据,这样可以大大节省系统直接读取磁盘来获得数据的I/O开销,更重要的是可以极大提升速度。将这种热点数据存到Redis(内存)中,要用的时候,直接从内存取,极大的提高了速度和节约了服务器的开销。

4、端口

mysql端口:3306

redis端口:6379

mongoDB端口:27017

阶段二、认识五种类型

1、string字符串
2、list列表
3、hash哈希
4、set集合
5、sorted sets有序集合

阶段三、五种类型的操作

进入redis

进入:redis-cli --raw

不能进入,就安装:

sudo apt-get update

sudo apt-get install redis-server

1、string字符串
  • 可以为整形、浮点型和字符串,统称为元素

    基本操作

    设置

    set key value 例:set name 'zcm'

    获取

    get key 例:get name

    key是唯一的,不能用同一个key 不然就会覆盖

    查看过期时间

    -1 表示永久 -2 表示不存在

    ttl key 例: ttl name ​

    设置过期时间

    expire key seconds 例: expire name 20

    设置key的同时,设置过期时间

    set key value ex seconds 例: set age 18 ex 20 或 setex key seconds value 例: setex sex 20 'nan' ​

    追加

    给已有的value,再添加新的值

    append key value 例: append name love

    get name

    设置/获取多个

    设置多个 string

    mset key value key value .. 例: mset username 'lucky' password '123'

    获取多个

    mget key key key ... 例: mget username password ​

    key操作

    查看所有的key 例: keys *

    删除

    del key 例: del name

    查看key是否存在,存在返回 1,不存在返回 0

    exists key

    查看key类型

    type key ​

    运算

    set num 1 # 自动识别,字符串里面的 整数

    +1

    incr key 例: incr num

    -1

    decr kye 例: decr num

    +整数

    incrby key increment 例: incrby num 50

    -整数

    decrby key increment 例: decrby num 50

2、list 列表

实现队列,元素不唯一,先入先出原则

1# 设置 2# lpush 左添加 (栈 先进后出) 3lpush key value # 例: lpush li 1 2 3 4 4# rpush 右添加 (队列 先进先出) 5rpush key value # 例: rpush li 1 2 3 4 67# 查看 8# lrange key start stop 9例 查看所有 10lrange li 0 -1 1112# 获得list的元素个数 13llen key 例: llen li 1415# 查看位于 lindex 位置上的元素 16lindex key index 例: lindex li 3 1718# 删除 19# 删除左边一个 20lpop key 例:lpop li 21# 删除右边一个 22rpop key 例:rpop li 23# 指定删除 24rpush my_list a a b b c d e e f 25# lrem key count value 2627# count > 0 从左往右 删除数量为count的value 28例:lrem my_list 2 a 29# count = 0 删除所有的 value 30例:lrem my_list 0 b 31# count < 0 从右往左 删除数量为count的value 32例:lrem my_list -2 e
3、hash哈希

key : (field : value)

是一个string类型的field和value的映射表,特别适合用于存储对象

hash的key必须是唯一的

1# 设置 2# hset key field value 例:user {name:lucky} hest user name lucky 3# 获取 4# hget key field 例:hget user name 5# 删除 6# hdel key field 例:hdel user name 7# 设置多个 8# hmset key field value [field value] 9例:user{name:lucky,age:18,sex:male} 10hmset user name lucky age 18 sex male 11# 获取多个 12# hmget key field field.. 13例:hmget user name age sex 14# 获取全部 field value 15# hgetall key 例:hgetall user 16# 获取所有的 field 17# hkeys key 例:hkeys user 18# 获取所有的 value 19# hvals key 例:hvals user 20# 获取 field 的个数 21# hlen key 例:hlen user 22# 获取 field 的类型 23# type key 例:type user
4、set集合

各不相同的元素

1# 设置 2# sadd key value [value] (唯一,无序) 3例:sadd my_set a w c d w e 4# 获取 5# smembers key 例:smembers my_set 6# 删除 7# srem 指定删除 srem key member 例:srem my_set c 8# spop 随机删除 spop key 例:spop my_set 9# 移动一个集合的值到另一个集合 10# smove oldkey newkey member 例:smove my_set my_set2 b 11# 判断集合存在某个值 12# sismember key value 例:sismember my_set2 b 13# 交集 14# sinter key1 key2 .. 例:sinter my_set my_set2 15# 把 key1 key2 的交集合并到 newkey 16# sinterstore newkey key1 key2 例:sinterstore new_set my_set my_set2 17# 并集 18# sunion key1 key2 .. 例:sunion my_set my_set2 19# 把 key1 key2 的并集合并到 newkey 20# sunionstore newkey key1 key2 例:sunionstore new_set2 my_set my_set2 21# 差集 22# sdiff key1 key2 例:sdiff my_set my_set2 23# 把key1 key2 的差集合并到 newkey 24# sdiffstore newkey key1 key2 例:sdiffstore new_set3 my_set my_set2 25# 获得集合个数 26# scard key 例:scard my_set 27# 随机返回一个 28# srandmember key 例:srandmember my_set
5、sorted set有序集合
1# 设置 2# zadd key score member (权,权重,顺序) 3例: 4zadd my_zset 1 'one' 5zadd my_zset 2 'two' 6zadd my_zset 3 'three' 7zadd my_zset 4 'four' 8zadd my_zset 5 'five' 9# 获取 10# zrange 正序 11# zrange key start stop (withscores) 例:zrange my_zset 0 -1 12# zrevrange 倒序 13# zrevrange key start stop 例:zrevrange my_zset 0 -1 14# 删除 15# zrem key member 例:zrem my_zset two 16# 索引 17# zrank 正序 18# zrank key member 例:zrank my_zset three 19# zrevrank 反序 20# zrevrank key member 例:zrevank my_zset three 21# zcard 查看有序集合元素数 22# zcard key 例:zcard my_zset 23# zrangebyscore 返回集合中 score 在给定区间的元素 24# zrange my_zset 0 -1 withscores 返回全部元素 25# zrangebyscore my_zset 2 3 withscores 返回了 score 在 2~3 区间的元素 26# zcount 返回集合中 score 在给定区间的数量 27# zcount key min max 例:zcount my_zset 2 3 28# zscore 查看score值 29# zscore key member 例:zscore my_zset one 30# zremrangebyrank 删除集合中排名在给定区间的元素 31# zrange my_zset 0 -1 withscores 删除全部元素 32# zremrangebyrank my_zset 1 3 33# zremrangebyscore 删除集合中 score 在给定区间的元素 34# zrange my_zset 0 -1 withscores 删除全部元素 35# zremrangebyscore my_zset 1 2
点赞
收藏

评论区

加载中...

相关推荐

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

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

KVM调整cpu和内存

一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid

Nginx + lua +[memcached,redis]

精品案例1、Nginxluamemcached,redis实现网站灰度发布2、分库分表/基于Leaf组件实现的全球唯一ID(非UUID)3、Redis独立数据监控,实现订单超时操作/MQ死信操作SelectPollEpollReactor模型4、分布式任务调试Quartz应用

Twitter的分布式自增ID算法snowflake (Java版)

概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移