Linux-Xshell-Redis

这篇具有很好参考价值的文章主要介绍了Linux-Xshell-Redis。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、NoSQL

        NoSQL 是 Not Only SQL 的缩写,意即"不仅仅是 SQL"的意思,泛指非关系型的数据库。强调 Key-Value Stores 和文档数据库的优点。

        NoSQL 产品是传统关系型数据库的功能阉割版本,通过减少用不到或很少用的功能,来大幅度提高产品性能

        ·不遵循 SQL 标准。 (添加 insert 修改 update )

        ·不支持 ACID。

        ·远超于 SQL 的性能。

1.NoSQL的起源

        NoSQL(Not Only SQL)是一种非关系型数据库管理系统的范畴,起源于互联网公司对于大数据处理和高可扩展性需求的追求。以下是NoSQL起源的简要描述:

        1.高负载互联网应用:随着互联网的迅猛发展,一些大型网络平台、社交媒体和电子商务网站等面临着大量的数据存储和高并发访问的问题。传统关系型数据库在应对这类场景时遇到了挑战,因为它们常常基于ACID特性,对于数据结构和规模的灵活性和可扩展性有限。

        2.大数据需求:随着互联网应用和物联网设备的普及,数据量呈指数级增长。传统关系型数据库面临处理大规模数据集和快速读写的瓶颈,需要更高效的解决方案。

        3.分布式计算和云计算:分布式计算和云计算技术的兴起也促进了NoSQL数据库的发展。NoSQL数据库适应了分布式环境,能够水平扩展和并行处理,带来更好的性能和可伸缩性。

        4.数据模型创新:为了满足互联网应用的多样化需求,NoSQL数据库引入了不同的数据模型,例如键值存储、文档存储、列存储和图形数据库等。这些新的数据模型提供了更灵活的数据结构和查询方式。

        5.NoSQL运动:2009年,NoSQL成为一个独立的概念,并聚集了一些开源项目和公司的努力。很多互联网公司开始采用或开发自己的NoSQL数据库解决方案,推动了NoSQL运动的兴起。

        总之,NoSQL起源于对大数据处理需求和传统关系型数据库的局限性,旨在提供更高效、可扩展和灵活的数据存储和管理方案,适应了当今互联网时代的挑战和需求。

2.NoSQL的使用

2.1NoSQL特性

        ·灵活的数据模型

        ·海量数据的读写

        ·高性能和可伸缩性

        ·高可用性和容错性

2.2NoSQL不适用场景

        ·需要事务支持      

        ·基于 sql 的结构化查询存储,处理复杂的关系,需要关系查询。

用不着 sql 的和用了 sql 也不行的情况,考虑用 NoSql

3.常见的NoSQL及区别

3.1常见的NoSQL数据库

临时性键值存储 永久性键值存储 面向文档的数据库 面向列的数据库
Memcached Tokyo Tyrant MangoDB Cassandra
Rendis Flare CouchDB HBase
ROMA

HyperTable

Redis

3.2区别

        Memcached

·很早出现的NoSQL数据库

·数据都在内存中,一般不持久化

·支持简单的 key-value 模式,支持类型单一

·一般是作为缓存数据库辅助持久化的数据库(MySQL)

        Redis

·几乎覆盖了 Memcached 的绝大部分功能

·数据都在内存中,支持持久化,主要用作备份恢复

·除了支持简单的 key-value 模式,还支持多种数据结构的存储,比如 list、set、hash、zset 等。

·一般是作为缓存数据库辅助持久化的数据库

        MongoDB

·高性能、开源、模式自由(schema free)的文档型数据库

·数据都在内存中, 如果内存不足,把不常用的数据保存到硬盘

·虽然是 key-value 模式,但是对 value(尤其是 json)提供了丰富的查询功能

·支持二进制数据及大型对象

·可以根据数据的特点替代 RDBMS,成为独立的数据库。或者配合 RDBMS,存储特定的数

二、Redis

1.Redis简介

·Redis 是一个开源的 key-value 存储系统。

·和 Memcached 类似,它支持存储的 value 类型相对更多,包括 string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和 hash(哈希类型)。

·这些数据类型都支持 push/pop、add/remove 及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。

·在此基础上,Redis 支持各种不同方式的排序。

·与 memcached 一样,为了保证效率,数据都是缓存在内存中。

·区别的是 Redis 会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件。

·并且在此基础上实现了 master-slave(主从)同步。

2.Redis的应用场景

2.1数据缓存(提高访问性能)

查询概率》》 增删改的概率

将一些数据在短时间之内不会发生变化,而且它们还要被频繁访问,为了提高用户的请求速度和降低网站的负载,降低数据库的读写次数,就把这些数据放到缓存中。

2.2会话缓存

session cache,主要适用于 session 共享 (string 类型)

2.3排行榜/计数器

(NGINX+lua+redis 计数器进行 IP 自动封禁)(zset)

2.4消息队列

(构建实时消息系统,聊天,群聊) (list)

2.5粉丝 (set)

2.6用于存储对象 (hash)

面试题

string :会话信息

list:消息

set:粉丝 共同好友

zset :排行榜

hash: 存储对象

三、Redis的安装及启动停止

1.下载redis的安装包

        命令: wget https://download.redis.io/releases/redis-5.0.14.tar.gz

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

2.安装redis所依赖的环境

        命令: yum -y install gcc-c++

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

3.解压redis压缩包

        命令: tar -zxvf redis-5.0.14.tar.gz

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

4.编译

        a.进入redis解压目录

        命令: cd redis-5.0.14Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

        b.执行make命令编译

        命令: make

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

5.安装redis

        命令: make PREFIX=/usr/redis install (如果不加prefix 默认安装到/usr/local下面)

        (如果命令执行不成功,换为  make install PREFIX=/usr/redis )

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

6.查看redis安装位置

        命令: which redis-server

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

7.启动redis

a.进入安装目录的bin目录下,顺便查看一下是否拥有权限

         命令: cd /usr/redis/bin/

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

b.启动redis

        命令: ./redis-server

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

出现上图即为安装成功

redis启动成功,但是这种启动方式需要一直打开窗口,不能进行其他操作,不太方便

按ctrl+c可以关闭窗口

8.修改配置文件

8.1拷贝配置文件到安装目录的bin下

        命令: cp /usr/redis/redis-5.0.14/redis.conf /usr/redis/bin
Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

8.2修改redis.conf文件

a.设置后台启动

        不想设置后台启动可以不改

b.设置密码

        requirepass 密码

如果需要客户端连接需要设置密码,不需要连接就不需要设置    

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

c.设置远程连接

        命令1: #bind 127.0.0.1

#注释掉绑定本机,才可以远程连接访问

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

        命令2: bind 0.0.0.0

所有的都可以连接

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

d.关闭保护模式

        protected-mode no

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

9.启动redis

        因为第八步里面直接把redis.conf文件拷贝过来,所以可以直接两个文件一起运行

        命令: ./redis-server ./redis.conf

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

10.连接redis

        命令: ./redis-cli -a 密码

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

11.退出redis

        命令: exit

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

12.关闭redis

        命令:./redis-cli shutdown

                   ./redis-cli -p 6379 -a wsl -h 127.0.0.1 shutdown

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

13.配置开机启动文件

        vim /lib/systemd/system/redis.service 

[Unit]
Description=Redis
After=network.target
[Service]
ExecStart=/usr/redis/bin/redis-server /usr/redis/bin/redis.conf 
ExecStop=/usr/redis/bin/redis-cli -h 127.0.0.1 -p 6379 -a wsl shutdown
[Install]
WantedBy=multi-user.target

刚刚配置的服务需要让 systemctl 能识别,就必须刷新配置

systemctl daemon-reload  刷新配置
systemctl enable redis  开机自启
systemctl status redis   redis 状态
systemctl start redis  开启 redis
systemctl stop redis 关闭 redis
systemctl disable redis 禁止开机自启

14.使用客户端连接radis

        打开Another Redis Desktop Manager建立连接

        Host是你的ip地址 Port是redis端口 Password是你设置的密码

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

成功连接

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

四、连接radis

使用radis-cli连接radis

当你设置完密码后有两种进入方式

先进入目录cd /usr/radis/bin

        ①先输入命令: ./radis-cli 进入  ---注意这是你还不能进行操作

            再输入密码: auth 密码         ---此时才可以开始操作  

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

        ②直接输入命令:  ./radis-cli -a 密码

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

五、Key

1.查看数据库

默认 16 个数据库,类似数组下标从 0 开始,初始默认使用 0 号库

        查看数据库命令: config get databases

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

2.获取当前库中的所有key

        命令: keys *

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

3.查看当前数据库的 key 的数量

        命令: dbsize 

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

4.选择库

        命令: select 目标数据库 

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

5.清空当前库

        命令: flushdb

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

6.通杀所有库

        命令:flushall (不建议使用)

7.移动数据

        将当前的数据库 key 移动到某个数据库,目标库有,则不能移动

        命令: move [key] 目标数据库

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

我们可以很清楚的看到0号数据库的第一个name移动到了1号数据库

而第二个name明显没有移动成功

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

8.从当前数据库中随机返回key

        命令: randomkey

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

9.查看key的类型

        命令: type [key]

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

10.删除key

        命令: del [key]

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

11.判断是否存在 key

        命令: exists [key]

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

12.为给定的key设置过期时间

        命令: expire [key] num       单位是秒

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

        命令: pexpire [key] num     单位是毫秒

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

13.删除key的过期时间        

        命令: persist [key]

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

14.查看还有多少秒过期

        命令:ttl [key]

-1 表示永不过期,-2 表示已过期

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

六、常见的数据类型

1.string类型

1.1简介

        String是Redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value。

        String类型是二进制安全的。意味着Redis的string可以包含任何数据。比如jpg图片或者序列化的对象。

        String类型是Redis最基本的数据类型,一个Redis中字符串value最多可以是512M

1.2.常用命令

1.2.1添加键值对

        命令: set <key><value>

*NX:当数据库中key不存在时,可以将key-value添加数据库

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

*XX:当数据库中key存在时,可以将key-value添加数据库,与NX参数互斥

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

*EX:key的超时秒数

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

*PX:key的超时毫秒数

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

1.2.2取值

        查询对应键值

        命令: get <key>

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

1.2.3以新换旧

        设置了新值同时获得旧值。

        命令: getset <key><value>

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

批量操作

1.2.4批量设置key

        命令: mset key1 key2

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

        同时设置一个或多个 key-value 对,当且 仅当所有给定 key 都不存在 如果有一个存在就会不成功。

注意:有一个失败则都失败

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

1.2.5批量获取

        命令: mget key1 key2

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

1.2.6替换

        从 index 开始替换 value

        命令: setrange <key><起始位置index><value>

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节        

1.2.7获取

        命令: getrange <key><起始位置><结束位置>

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

1.2.8追加

        将给定的<value> 追加到原值的末尾

        命令: append <key><value>

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

1.2.9获得值的长度

        命令: strlen <key>

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

1.2.10增值

        将 key 中储存的数字值增1

        只能对数字值操作,如果为空,新增值为1

        命令: incr <key>

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

1.2.11减值

        将 key 中储存的数字值减1

        只能对数字值操作,如果为空,新增值为-1

        命令: decr <key>

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

1.2.12递增递减

        将 key 中储存的数字值增减。自定义步长。

        命令: incrby / decrby <key><步长>

示例: incrby age 10 递增

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

示例: decrby age 10 递减

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

1.3.数据结构

        String的数据结构为简单动态字符串(Simple Dynamic String,缩写SDS)。是可以修改的字符串,内部结构实现上类似于Java的ArrayList,采用预分配冗余空间的方式来减少内存的频繁分配。

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

        如图中所示,内部为当前字符串实际分配的空间capacity一般要高于实际字符串长度len。当字符串长度小于1M时,扩容都是加倍现有的空间(2倍),如果超过1M,扩容时一次只会多扩1M的空间。需要注意的是字符串最大长度为512M。

2.list类型

2.1简介

        Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。

        它的底层实际是个双向链表,对两端的操作性能很高,通过索引下标的操作中间的节点性能会较差。

2.2常用命令

2.2.1添加

        从左边/右边插入一个或多个值。

        命令: lpush/rpush <key> <value1><value2><value3> ....

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

2.2.2取值

        按照索引下标获得元素(从左到右)

        命令: lrange <key> <start> <stop>

        命令: lrange list1 0 -1

        0左边第一个,-1右边第一个,(0 -1表示获取有)

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

2.2.3消值

        从左边/右边吐出一个值。值在键在,值光键亡。

        命令: lpop/rpop <key>

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

2.2.4移值

        从<key1>列表右边吐出一个值,插到<key2>列表左边

        命令: rpoplpush <key1><key2>

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

2.2.5 获取集合列表长度

        命令: llen <key>

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

2.2.6按照索引下标获得元素(从左到右)

        命令: lindex <key> <index>

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

2.2.7删除

        从左边删除n个对应的value值(从左到右)

        命令: lrem <key> <n> <value>

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

注:当列表key中没有删除值是则删除失败

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

2.2.8替换

        将列表key下标为index的值替换成value

        命令: lset <key> <index> <value>

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

2.3数据结构

        List的数据结构为快速链表quickList。

        首先在列表元素较少的情况下会使用一块连续的内存存储,这个结构是ziplist,也即是压缩列表。(它将所有的元素紧挨着一起存储,分配的是一块连续的内存)。当数据量比较多的时候才会改成quicklist。

        因为普通的链表需要的附加指针空间太大,会比较浪费空间。比如这个列表里存的只是int类型的数据,结构上还需要两个额外的指针prev和next。

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

        Redis将链表和ziplist结合起来组成了quicklist。也就是将多个ziplist使用双向指针串起来使用。这样既满足了快速的插入删除性能,又不会出现太大的空间冗余。

3.hash类型

3.1简介

        hash是一个string类型的field和value的映射表,hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。类似Java里面的Map<String,Object>

        用户ID为查找的key,存储的value用户对象包含姓名,年龄,生日等信息,如果用普通的key/value结构来存储

主要有以下2种存储方式:

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

        而我们可以通过第三种方式hash:( key(用户ID) + field(属性标签)) 就可以操作对应属性数据了,既不需要重复存储数据,也不会带来序列化和并发修改控制的问题。

3.2常用命令

3.2.1添加

        给<key>集合中的 <field>键赋值<value>

        命令: hset <key><field><value>

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

3.2.2取值

        从<key1>集合<field>取出 value

        命令: hget <key1><field>

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

3.2.3获取所有属性

        列出该hash集合的所有field

        命令: hkeys <key>

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

3.2.4获取所有值

        列出该hash集合的所有value

        命令: hvals <key>

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

3.2.5查找属性

        命令: hexists<key1><field>

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

3.2.6为value加值

        为哈希表 key 中的域 field 的值加上增量 1 -1

        命令: hincrby <key><field><increment>

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

3.3数据结构

        Hash类型对应的数据结构是两种:ziplist(压缩列表),hashtable(哈希表)。当field-value长度较短且个数较少时,使用ziplist,否则使用hashtable。

        ZipList 是一种特殊的“双端链表” ,由一系列特殊编码的连续内存块组成。可以在任意一端进行压入/弹出操作

4.set类型

4.1简介

        set对外提供的功能与list类似是一个列表的功能,特殊之处在于set是可以自动排重的,当你需要存储一个列表数据,又不希望出现重复数据时,set是一个很好的选择,并且set提供了判断某个成员是否在一个set集合内的重要接口,这个也是list所不能提供的。

4.2常用命令

4.2.1添加

        将一个或多个 member 元素加入到集合 key 中,已经存在的 member 元素将被忽略

        命令: sadd <key><value1><value2> .....

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

4.2.2取值

        取出该集合的所有值

        命令: smembers <key>

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

4.2.3判断是否含有该值

        判断集合<key>是否为含有该<value>值,有1,没有0

        命令: sismember <key><value>

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

4.2.4返回该集合的元素个数

        命令: scard <key>

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

4.2.5删除

        删除集合中的某个元素

        命令: srem <key><value1><value2>

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

4.3数据结构

        Set数据结构是dict字典,字典是用哈希表实现的。

        Java中HashSet的内部实现使用的是HashMap,只不过所有的value都指向同一个对象。Redis的set结构也是一样,它的内部也使用hash结构,所有的value都指向同一个内部值。

5.SortedSe(zset)类型

5.1简介

        Redis有序集合zset与普通集合set非常相似,是一个没有重复元素的字符串集合。

        不同之处是有序集合的每个成员都关联了一个评分(score),这个评分(score)被用来按照从最低分到最高分的方式排序集合中的成员。集合的成员是唯一的,但是评分可以是重复了 。

        因为元素是有序的, 所以你也可以很快的根据评分(score)或者次序(position)来获取一个范围的元素。

        访问有序集合的中间元素也是非常快的,因此你能够使用有序集合作为一个没有重复成员的智能列表。

5.2常用命令

5.2.1添加

        将一个或多个 member 元素及其 score 值加入到有序集 key 当中。

        命令: zadd <key><score1><value1><score2><value2>…

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

5.2.2取值

        返回有序集 key 中,下标在<start><stop>之间的元素

带WITHSCORES,可以让分数一起和值返回到结果集。

        命令: zrange <key> <start> <stop> [WITHSCORES]

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

5.2.3排序

        返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。有序集成员按 score 值递增(从小到大)次序排列。

        命令: zrangebyscore key min max [withscores] [limit offset count]

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

        反向排序:

        zrevrangebyscore key max min [withscores] [limit offset count]

        同上改为从大到小排序

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

5.3数据结构

        SortedSet(zset)是Redis提供的一个非常特别的数据结构,一方面它等价于Java的数据结构Map<String, Double>,可以给每一个元素value赋予一个权重score,另一方面它又类似于TreeSet,内部的元素会按照权重score进行排序,可以得到每个元素的名次,还可以通过score的范围来获取元素的列表。

        zset底层使用了两个数据结构

        (1)hash,hash的作用就是关联元素value和权重score,保障元素value的唯一性,可以通过元素value找到相应的score值。

        (2)跳跃表,跳跃表的目的在于给元素value排序,根据score的范围获取元素列表。

数据结构之跳表_跳表几级_所幸你是例外的博客-CSDN博客

对比有序链表和跳跃表,从链表中查询出51

(1) 有序链表

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

要查找值为51的元素,需要从第一个元素开始依次查找、比较才能找到。共需要6次比较。

(2) 跳跃表

从第2层开始,1节点比51节点小,向后比较。

41节点比51节点小,继续向后比较,后面就是NULL了,所以从41节点向下到第1层

在第1层,41节点比51节点小,继续向后,61节点比51节点大,所以从61向下

在第0层,51节点为要查找的节点,节点被找到,共查找4次。

Linux-Xshell-Redis,Linux,linux,运维,服务器,笔记,redis,1024程序员节

6.各数据的使用场景

类型

简介

特性

场景

String(字符串)

二进制安全

可以包含任何数据,比如jpg图片或者序列化的对象,一个键最大能存储512M

---

存token

验证码

Hash(字典)

键值对集合,即编程语言中的Map类型

适合存储对象,并且可以像数据库中update一个属性一样只修改某一项属性值(Memcached中需要取出整个字符串反序列化成对象修改完再序列化存回去)

存储、读取、修改用户属性

List(列表)

链表(双向链表)

增删快,提供了操作某一段元素的API

1、最新消息排行等功能(比如朋友圈的时间线)

2、消息队列

Set(集合)

哈希表实现,元素不重复

1、添加、删除、查找的复杂度都是O(1) 2、为集合提供了求交集、并集、差集等操作

1、共同好友

2、利用唯一性,统计访问网站的所有独立ip 

Sorted Set(有序集合)

将Set中的元素增加一个权重参数score,元素按score有序排列

数据插入集合时,已经进行天然排序

1、排行榜

2、带权重的消息队列文章来源地址https://www.toymoban.com/news/detail-719431.html

到了这里,关于Linux-Xshell-Redis的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux 环境搭建以及xshell远程连接

    文章目录 前言 一、如何获得云服务器? 二、如何使用终端软件连接到Linux?(xshell) Linux环境的搭建方式主要有以下四种: 1. 直接安装在物理机上,但是由于 Linux 桌面使用起来非常不友好。 [ 不推荐 ] 2. 使用虚拟机软件, 将 Linux 搭建在虚拟机上,但是由于当前的虚拟机软

    2024年02月06日
    浏览(42)
  • Xshell配置密钥 免密登录Linux

    一、使用Xshell生成密钥 打开Xshell-点击工具-点击新建用户密钥生成向导     输入密钥名称和密码(密码可以为空)   复制公钥然后点击完成即可   这里直接点击关闭   二、将公钥粘贴至服务器的~/.ssh/authorized_keys 文件中 连接Linux-打开xftp  找到.ssh目录下的authorized_key文件并将

    2024年02月03日
    浏览(42)
  • 『Linux』Linux环境搭建 | 阿里云云服务器白嫖 | Xshell环境配置

    🔥 博客主页 : 小羊失眠啦 🔖 系列专栏 : C语言 、 Linux 🌥️ 每日语录 : 时间,都是公平的,不公平的,只是现在的自己,对未来的自己。 ❤️ 感谢大家点赞👍收藏⭐评论✍️ 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家

    2024年02月08日
    浏览(62)
  • Linux的安装,配置及xshell的连接

    目录 1、Linux系统安装步骤 2、系统分盘  3、虚拟机网卡的配置 4、连接xshell步骤 5、xshell连接不上,解决办法如下                                (可以不手动分配,可选自动分配,此处处于个人实验需求)                                            修改配置文件

    2024年02月07日
    浏览(38)
  • 【超详细】Xshell连接Linux服务器

    Xshell是一款功能强大且安全的终端模拟器,支持SSH、SFTP、TELNET、RLOGIN和SERIAL,是一款终端远程连接服务器的Windows软件,主要用于在Windows系统上远程操控服务器进行工作以及统一管理多台服务器集群,它通过多种不同的连接协议和密码,保障着用户的连接服务器安全,是一个

    2024年03月25日
    浏览(87)
  • 如何使用 Xshell 连接 Linux 服务器

    目录 🌳 搭建 Linux 环境 🌱 Linux 环境的搭建方式 ☘️ 购买云服务器 🌳 使用Xshell远程登陆到Linux服务器 🌱 下载安装Xshell ☘️ 查看Linux主机ip 🍀 使用Xshell登录主机 💧 方法1 💧 方法2 🌳额外补充 🍎 总结 Linux环境的搭配方式主要有以下三种: 1. 直接安装在物理机上. 但是

    2024年02月02日
    浏览(55)
  • linux连接外网和连接Xshell

    连接外网  1.首先添加网卡然后编辑网卡 2.然后进入编辑页面如图设置 3. 然后去到etc目录下的network-scripts编辑ens33 4.进入vim编辑器里修改  5.重启网卡 去右上角点击连接    6. 然后ping百度 连接成功  连接Xshell 1.添加一块新网卡 2编辑网卡    3设置第二块网卡 自定义VMnet2 4. 打

    2024年02月15日
    浏览(39)
  • 使用XShell连接VMware虚拟机【Linux系统】

    由于VMware和本机的交互不是很好,总是要频繁的切换鼠标,所以使用XShell会比较方便,而且服务器也经常使用XShell进行连接操作, 所以习惯XShell的使用还是很必要的。 首先查看虚拟机设置的网络连接是否为NAT模式 查看方法如下图 查看ip地址 点击VMware左上角“编辑”------“虚

    2024年02月10日
    浏览(47)
  • xshell连接Linux,IP和主机名配置

    本文记录了Linux中静态ip设置,并使用xshell进行远程访问,建议先看完全文再按步骤操作 红框是要修改的内容,蓝框是新添加的内容 static IPADDR=192.168.10.101 GATEWAY=192.168.10.2 DNS1=192.168.10.2 添加以下内容 启动过程中需要敲回车 ,等待一会儿 使用 ping www.baidu.com 看是否能ping通 使用

    2024年02月07日
    浏览(38)
  • 2分钟 Linux 远程连接ssh(Xshell)教程!!!

    一、准备阶段         1.虚拟机及镜像:虚拟机+镜像         2.Xshell:网盘:Xshell+Xftp 二、虚拟机连接准备         1.查看虚拟机网络端口地址,作为后续xshell连接的主机地址  如果执行不了ifconfig,安装net-tools:sudo apt install net-tools         2.检查虚拟机是否开启ssh服务和

    2024年02月15日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包