当前位置:网站首页>Redis基础学习
Redis基础学习
2022-07-30 05:15:00 【Alex_Drag】
目录
NoSQL数据库概述
NoSQL(Not Only SQL),泛指非关系型的数据库。NoSQL不依赖业务逻辑方式存储,而以简单的key-value模式存储。因此大大的增加了数据库的扩展能力。
- 不遵循SQL标准;
- 不支持ACID;
- 远超于SQL的性能;
NoSQL使用场景:
- 对数据高并发的读写;
- 海量数据的读写;
- 对数据的高扩展性;
NoSQL不适用场景:
- 需要事务支持;
- 基于sql的结构化查询存储,处理复杂的关系,需要即席查询;
Redis简介
Redis(Remote Dictionary Server),即远程数据字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)。
Redis快的原因:
- 数据存储在内存中;
- 结构简单
- redis是单线程的,不用切换线程耗时;
- 采用复用i/o阻塞机制
Redis结构类型:
- 字符串(Strings)
- 散列(hashes)
- 列表(lists)
- 集合(sets)
- 有序集合(sorted sets)
- 范围查询(bitmaps, hyperloglogs)
- 地理空间(geospatial)
Docker安装redis
docker下载redis
[[email protected] ~]# docker pull redis
Using default tag: latest
latest: Pulling from library/redis
123275d6e508: Already exists
f2edbd6a658e: Pull complete
66960bede47c: Pull complete
79dc0b596c90: Pull complete
de36df38e0b6: Pull complete
602cd484ff92: Pull complete
Digest: sha256:1d0b903e3770c2c3c79961b73a53e963f4fd4b2674c2c4911472e8a054cb5728
Status: Downloaded newer image for redis:latest
docker.io/library/redis:latest
启动redis
[[email protected] ~]# mkdir -p /mydata/redis/conf
[[email protected] ~]# touch /mydata/redis/conf/redis.conf
[[email protected] ~]# echo "appendonly yes" >> /mydata/redis/conf/redis.conf
[[email protected] ~]# docker run -p 6379:6379 --name redis -v /mydata/redis/data:/data \
> -v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \
> -d redis redis-server /etc/redis/redis.conf
ce7ae709711986e3f90c9278b284fe6f51f1c1102ba05f3692f0e934ceca1565
查看redis是否启动成功
[[email protected] conf]# ps -ef|grep redis
systemd+ 3705 3688 0 21:04 ? 00:00:00 redis-server *:6379
root 4173 2897 0 21:09 pts/0 00:00:00 grep --color=auto redis
连接redis客户端,并测试redis-cli是否连接成功
[[email protected] conf]# docker exec -it redis redis-cli
127.0.0.1:6379> ping
PONG
Redis操作类型
数据库操作
清空当前库
flushdb
通杀全部库
flushall
查询当前库的所有key
keys *
字符串(Strings)
- 创建字符产 set key value(值的长度不能超过512 MB)
127.0.0.1:6379> set name alex
OK`
- 获取字符串 get key
127.0.0.1:6379> get name
"alex"
- 批量创建和获取字符串
127.0.0.1:6379> mset a 1 b 2 c 3 d 4
OK
127.0.0.1:6379> mget a b c
1) "1"
2) "2"
3) "3"
- 追加字符串APPEND key value
127.0.0.1:6379> append name hahaha
(integer) 10
127.0.0.1:6379> get name
"alexhahaha"
- 获取字符串的长度STRLEN
127.0.0.1:6379> strlen name
(integer) 10
- 自增/自减运算 INCR/DECR
127.0.0.1:6379> strlen name
(integer) 10
- 自增/自减指定的值 INCRBY/DECRBY(只能自增/自减可以转化成integer类型的数据,当为其他类型的时候,会报错)
127.0.0.1:6379> incr name
(error) ERR value is not an integer or out of range
127.0.0.1:6379> incr age
(integer) 19
- 获取某个范围GETRANGE的字符串
127.0.0.1:6379> getrange name 1 2
"le"
- 替换某个范围的字符串SETRANGE
127.0.0.1:6379> setrange name 4 qqq
(integer) 10
127.0.0.1:6379> get name
"alexqqqaha"
- 设置过期时间SETEX
127.0.0.1:6379> setex a 5 zzz
OK
127.0.0.1:6379> expire b 10
(integer) 1
127.0.0.1:6379> ttl b
(integer) 7
127.0.0.1:6379> ttl b
(integer) -2
- 不存在的时候才设置SETNX
127.0.0.1:6379> get c
"3"
127.0.0.1:6379> setnx c 10
(integer) 0
127.0.0.1:6379> get c
"3"
- 获取当前的值的同时设置一个新值GETSET
127.0.0.1:6379> get c
"3"
127.0.0.1:6379> getset c 18
"3"
127.0.0.1:6379> get c
"18"
列表(lists)
- List当中插入一个元素LPUSH/RPUSH
127.0.0.1:6379> rpush city beijing xian
(integer) 2
127.0.0.1:6379> lpush city shenyang shanghai
(integer) 4
- List当中获取指定元素LRANGE
127.0.0.1:6379> lrange city 0 4
1) "shanghai"
2) "shenyang"
3) "beijing"
4) "xian"
- 移出List集合中的一个元素LPOP/RPOP
127.0.0.1:6379> lrange city 0 4
1) "shanghai"
2) "shenyang"
3) "beijing"
4) "xian"
127.0.0.1:6379> lpop city
"shanghai"
127.0.0.1:6379> rpop city
"xian"
- 移出List集合中指定的元素LREM
127.0.0.1:6379> lrange city 0 6
1) "beijing"
2) "beijing"
3) "shenyang"
4) "beijing"
127.0.0.1:6379> lrem city 2 beijing
(integer) 2
127.0.0.1:6379> lrange city 0 4
1) "shenyang"
2) "beijing"
- 根据索引(下标)获取集合中元素值LINDEX
127.0.0.1:6379> lrange city 0 4
1) "shenyang"
2) "beijing"
127.0.0.1:6379> lindex city 2
(nil)
127.0.0.1:6379> lindex city 1
"beijing"
- 获取List的长度LLEN
127.0.0.1:6379> llen city
(integer) 2
- 裁剪List为原来的一部分LTRIM(直接修改原有List集合)
127.0.0.1:6379> lrange city 0 10
1) "shenyang"
2) "beijing"
3) "hangzhou"
4) "sichuan"
5) "chengdu"
6) "shenyang"
7) "fushun"
8) "anshan"
9) "jilin"
10) "siping"
127.0.0.1:6379> ltrim city 0 5
OK
127.0.0.1:6379> lrange city 0 10
1) "shenyang"
2) "beijing"
3) "hangzhou"
4) "sichuan"
5) "chengdu"
6) "shenyang"
- 移出列表的最后一个元素,并移动到新的列表中RPOPLPUSH
127.0.0.1:6379> rpoplpush city citypop
"shenyang"
127.0.0.1:6379> rpoplpush city citypop
(nil)
- BRPOPLPUSH 是 RPOPLPUSH 的阻塞版本。 当 source 包含元素的时候,这个命令表现得跟 RPOPLPUSH 一模一样。 当 source 是空的时候,Redis将会阻塞这个连接,直到另一个客户端 push 元素进入或者达到 timeout 时限。 timeout 为 0 能用于无限期阻塞客户端。
127.0.0.1:6379> brpoplpush city citypop 2
(nil)
(2.04s)
集合(Set)
集合中添加元素
查看集合中的元素SMEMBERS
判断某个元素是否存在于集合中SISMEMBER myset hello
获取集合中元素个数SCARD
移出集合中指定的元素值SREM
随机获取Set集合中的值SRANDMEMBER
随机删除集合中的一个元素SPOP
移动指定的元素到另一个集合当中去SMOVE
差集/交集/并集SDIFF/SINTER/SUNION
边栏推荐
猜你喜欢

Hexagon_V65_Programmers_Reference_Manual(12)

涂鸦Wi-Fi&BLE SoC开发幻彩灯带

An old programmer's summary review of 2020, how to become more awesome in 2021

Hexagon_V65_Programmers_Reference_Manual(11)

力扣344-反转字符串——双指针法

mysql无法远程连接 Can‘t connect to MySQL server on ‘xxx.xxx.xxx.xxx‘ (10060 “Unknown error“)

Discourse Custom Header Links

pytorch官网中如何选择以及后面的安装和pycharm测试步骤

Summary of skills in using ms project2010 project management software

Some understanding of YOLOv7
随机推荐
RadonDB MySQL on K8s 2.1.3 发布!
LeetCode Algorithm 2326. Spiral Matrix IV
Kyligence 出席华为全球智慧金融峰会,加速拓展全球市场
Predictive maintenance scheduling of multiple power equipment based on data-driven fault prediction
【LeetCode】Day107-除自身以外数组的乘积
JVM面试总结
BindingExpression path error: 'selectMenusList' property not found on 'object' ''ViewModel'
从想当亿万富翁到职场、创业、爱情、抑郁、学医学武,我的程序人生
暴力递归到动态规划 05 (贴纸拼词)
Kyligence 再获 CRN, insideBIGDATA 两大国际奖项认可
Some understanding of YOLOv7
Acwing perfect number
参与开源,让程序员找回热血和激情
MySQL - Function and Constraint Commands
LeetCode Algorithm 328. Parity linked list
mysql isolation level
力扣05-替换空格——字符串问题
An old programmer's summary review of 2020, how to become more awesome in 2021
mysql basics (4)
The Golden Circle Rule: Deep Thinking Methods for Successful People