redis *** 作

redis *** 作,第1张

  1. Redis 是开源的,免费的,高性能的 非关系型形数据库。

  2. 数据存储在内存,以key-value形式存储,类似于字典 {name: ‘jack’ }

  3. 可以设置过期时间,过期自动删除,也可以做持久化。

关系型数据库: MySQL

MySQL的缺陷: 1. 读取的时候相对较快, 但是写入数据是比较慢的, 读取速度是1w/s. 写入速度: 1000/s。 2. 读写时容易混淆,会读取出脏数据,需要对Mysql读写做限制. 3. 需要定义严格的表结构,插入数据需要满足完整性约束。 4. 数据存储在磁盘,相对于内存数据库,读写速度慢

Redis的优点:

  • 性能极高 – Redis读的速度是11w次/s,写的速度是8.1w次/s ,都是基于内存的,读写速度比较快。

  • 丰富的数据类型 – Redis支持 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型 *** 作。

  • 原子性 – Redis的所有 *** 作都是原子性的,要么成功执行,要么失败不执行。支持简单的事务,即原子性,通过MULTI和EXEC指令包起来。如下所有的 *** 作全部执行或者全部不执行

  • 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。

Redis的缺点:
  • 基于内存型数据库, 主机断电时数据全部丢失。

  • key同时过期会造成Redis数据库的“雪崩”,容易把整个服务搞垮。

redis常用的数据结构有哪些?

字符串、列表、集合、有序集合、哈希

单线程的redis为什么这么快?

1 纯内存 *** 作

Redis将数据储存在内存里面,读写数据的时候都不会受到硬盘I/O速度的限制,所以速度快

2 单线程 *** 作

单线程可以避免不必要线程间的切换和资源抢占

redis的内存淘汰策略有哪些?

1 noeviction(默认策略):当内存满时,写入 *** 作会报错,无法存储新数据。

2 allkeys-lru:当内存满时,移除最近最少使用的key

3 allkeys-random:当内存满时,在键空间中,随机移除某个key 4)volatile-lru,从设置了过期的key中删除最近最少使用的key 5)volatile-random,从设置了过期的key中随机删除key 6)volatile-ttl, 从设置了过期的key中根据剩余过期时间删除。

为什么redis需要把所有的数据放到内存中?

Redis为了达到最快的读写速度将数据都读到内存中,并通过异步的方式将数据写入磁盘,进行持久化。 如果不将数据放到内存中,磁盘的I/O速度会严重影响Redis的性能。 在内存越来越便宜的今天,Redis将会越来越受欢迎,耗点内存没什么

redis

查看所有的key
keys *

查看key的数据类型
type key1

查看key是否存在
exists key1

删除一个key
del key1

重命名
rename key key111

清空数据库
flushdb/flushall

添加一个key
set key1 ""

String类型

设置key-value
(1)set name jack
(2)mset name jack age 19 addr China
(3)append key val  #追加


获取key的值
get name
mget name age hobby
十秒后过期
set name jack ex 10
不存在时 设置key
set name jack nx

获取字符串值的长度
strlen name

获取字符串的分片
set name jack
getrange name 0 1

设置字符串的片取值
set name beikehan
setrange name 1 oo

数值加1 减1
set age 23
incr age   加1
decr age   减1

数值加5 减5
incrby age 5  加5
decrby age 5  减5
incrbyfloat age 1.3  转为字符串
incrbyfloat age -1.2

十秒后过期
set name jack ex 10

查看还有多久过期
ttl name
返回-2 key不存在
返回-1 key没有过期时间

永不过期
persist name

List

lpush numbers 1 2 3
头插法

rpush numbers 8 9 0
尾插法

lset numbers 5 10
更新列表

lpop numbers
头删法

rpop numbers
尾删法

blpop mylist 10
brpop mylist 10
堵塞删除

lrem numbers 0 2
删除指定的值 返回删除的个数

lrem numbers -2 1
从表尾部开始删除两个值为1的元素

lrem numbers 2 1
从表头开始删除两个值为1的元素

ltrim numbers 2 5
# 仅保留下标为2 5 的元素 删除其他元素

lrange numbers 0 -1
删除指定区域间的元素

lrem history:173 0 1
移除用户173历史记录 所有为1的商品

lpush history:173 1
将id为1的商品存到173的历史记录里

ltrim history:173 0 4
保存173前五条数据

lrange history:173 0 -1
查询列表中的所有元素

Hash

hset user:“名” name jack
设置单个 hset key field value

hget user:“名” name
查询指定字段

hgetall user:“名”
查询所有的值

Set

sadd workers tom lucy jack
# 向集合增加一个或多个成员  插入集合

srem workers tom
# 删除集合

scard workers
# 查询集合 返回的事集合中成员数

smembers workers
# 查询集合 返回的事集合中所有成员

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/728074.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-26
下一篇 2022-04-26

发表评论

登录后才能评论

评论列表(0条)

保存