如何进入redis数据库

如何进入redis数据库,第1张

本地安装了Redis并运行在6379端口,密码设置为 foobared

from redis import StrictRedis

redis = StrictRedis(host='localhost',port=6379,db=0,password='foobared')

注释:db是数据库名称

from redis import StrictRedis,ConnectionPool

pool = ConnectPool(host='localhost',port = 6379,db=0,password='foobared')

redis = StrictRedis(connection_pool=pool)

redis://[:password]@host:port/db

rediss://[:password]@host:port/db

unix://[:password]/path/to/socketsockdb=db

url='redis://foobared@localhost:6379/0'

pool = ConnectionPoolfrom_url(url)

redis=StrictRedis(connection_pool=pool)

结论:Redis 不能当数据用。

原因:我们理解的数据库,无论是 SQL、NoSQL、NewSQL,至少要是读写一致的。也就是说如果客户端发起一个写请求,如果服务器回复了成功,就算是之后服务器异常重启了,这个数据一样是能被读到的。

而 Redis 不是读写一致的。

答案里有人提到说 Redis 也会持久化,但是就算是 AOF,也是给客户端应答后,再定时写磁盘的,都是不一致的。

这里还没讨论磁盘损坏的问题。

有几个基于持久化存储的、兼容 Redis 协议的系统可以当作数据库使用,比如 SSDB、ARDB、Pika 等。但是据我所知,这些项目现在都不支持集群,没办法动态扩容。

另外,还有一个很麻烦的问题,就是刚才提到的 磁盘损坏问题,如果数据只存放在一个单点,一旦有磁盘损坏,就会造成数据丢失,所以,即使是同步持久化的但是没有集群备份数据的系统,用作数据库也是有很大风险的。

[Redis] redis-cli 命令总结

Redis提供丰富命令(command)数据库各种数据类型进行 *** 作些commandLinux终端使用

编程比使用Redis Java语言包些命令都应面Redis提供命令做总结

官网命令列表: (英文)

1、连接 *** 作相关命令

quit:关闭连接(connection)

auth:简单密码认证

2、value *** 作命令

exists(key):确认key否存

del(key):删除key

type(key):返值类型

keys(pattern):返满足给定pattern所key

randomkey:随机返key空间key

rename(oldname, newname):key由oldname重命名newname若newname存则删除newname表示key

dbsize:返前数据库key数目

expire:设定key间(s)

ttl:获key间

select(index):按索引查询

move(key, dbindex):前数据库key转移dbindex索引数据库

flushdb:删除前选择数据库所key

flushall:删除所数据库所key

3、String *** 作命令

set(key, value):给数据库名称keystring赋予值value

get(key):返数据库名称keystringvalue

getset(key, value):给名称keystring赋予value

mget(key1, key2,…, key N):返库string(名称key1key2…)value

setnx(key, value):存名称keystring则向库添加string名称key值value

setex(key, time, value):向库添加string(名称key值value)同设定期间time

mset(key1, value1, key2, value2,…key N, value N):同给string赋值名称key istring赋值value i

msetnx(key1, value1, key2, value2,…key N, value N):所名称key istring都存则向库添加string

名称key i赋值value i

incr(key):名称keystring增1 *** 作

incrby(key, integer):名称keystring增加integer

decr(key):名称keystring减1 *** 作

decrby(key, integer):名称keystring减少integer

append(key, value):名称keystring值附加value

substr(key, start, end):返名称keystringvalue串

4、List *** 作命令

rpush(key, value):名称keylist尾添加值value元素

lpush(key, value):名称keylist添加值value 元素

llen(key):返名称keylist度

lrange(key, start, end):返名称keyliststart至end间元素(标0始同)

ltrim(key, start, end):截取名称keylist保留start至end间元素

lindex(key, index):返名称keylistindex位置元素

lset(key, index, value):给名称keylistindex位置元素赋值value

lrem(key, count, value):删除count名称keylist值value元素

count0删除所值value元素count>0至尾删除count值value元素count<0尾删除|count|值value元素

lpop(key):返并删除名称keylist首元素 rpop(key):返并删除名称keylist尾元素

blpop(key1, key2,… key N, timeout):lpop命令block版本

即timeout0若遇名称key ilist存或该list空则命令结束

timeout>0则遇述情况等待timeout秒问题没解决则keyi+1始list执行pop *** 作

brpop(key1, key2,… key N, timeout):rpopblock版本参考命令

rpoplpush(srckey, dstkey):返并删除名称srckeylist尾元素并该元素添加名称dstkeylist部

5、Set *** 作命令

sadd(key, member):向名称keyset添加元素member

srem(key, member) :删除名称keyset元素member

spop(key) :随机返并删除名称keyset元素

smove(srckey, dstkey, member) :member元素名称srckey集合移名称dstkey集合

scard(key) :返名称keyset基数

sismember(key, member) :测试member否名称keyset元素

sinter(key1, key2,…key N) :求交集

sinterstore(dstkey, key1, key2,…key N) :求交集并交集保存dstkey集合

sunion(key1, key2,…key N) :求并集

sunionstore(dstkey, key1, key2,…key N) :求并集并并集保存dstkey集合

sdiff(key1, key2,…key N) :求差集

sdiffstore(dstkey, key1, key2,…key N) :求差集并差集保存dstkey集合

smembers(key) :返名称keyset所元素

srandmember(key) :随机返名称keyset元素

6、zset(sorted set) *** 作命令

zadd(key, score, member):向名称keyzset添加元素memberscore用于排序该元素已经存则根据score更新该元素顺序

zrem(key, member) :删除名称keyzset元素member

zincrby(key, increment, member) :名称keyzset已经存元素member则该元素score增加increment;

否则向集合添加该元素其score值increment

zrank(key, member) :返名称keyzset(元素已按score排序)member元素rank(即index0始)

若没member元素返nil

zrevrank(key, member) :返名称keyzset(元素已按score排序)member元素rank(即index0始)

若没member元素返nil

zrange(key, start, end):返名称keyzset(元素已按score排序)indexstartend所元素

zrevrange(key, start, end):返名称keyzset(元素已按score排序)indexstartend所元素

zrangebyscore(key, min, max):返名称keyzsetscore >= min且score <= max所元素

zcard(key):返名称keyzset基数 zscore(key, element):返名称keyzset元素element

score zremrangebyrank(key, min, max):删除名称keyzsetrank >= min且rank <= max所元素

zremrangebyscore(key, min, max) :删除名称keyzsetscore >= min且score <= max所元素

zunionstore / zinterstore(dstkeyN, key1,…,keyN, WEIGHTS w1,…wN, AGGREGATE SUM|MIN|MAX):Nzset求并集交集

并集合保存dstkeyN于集合每元素score进行AGGREGATE运算前都要乘于WEIGHT参数

没提供WEIGHT默认1默认AGGREGATESUM即结集合元素score所集合应元素进行SUM运算值MINMAX指

结集合元素score所集合应元素值值

7、Hash *** 作命令

hset(key, field, value):向名称keyhash添加元素fieldvalue

hget(key, field):返名称keyhashfield应value

hmget(key, field1, …,field N):返名称keyhashfield i应value

hmset(key, field1, value1,…,field N, value N):向名称keyhash添加元素field ivalue i

hincrby(key, field, integer):名称keyhashfieldvalue增加integer

hexists(key, field):名称keyhash否存键field域

hdel(key, field):删除名称keyhash键field域

hlen(key):返名称keyhash元素数

hkeys(key):返名称keyhash所键

hvals(key):返名称keyhash所键应value

hgetall(key):返名称keyhash所键(field)及其应value

8、持久化

save:数据同步保存磁盘

bgsave:数据异步保存磁盘

lastsave:返功数据保存磁盘Unix戳

shundown:数据同步保存磁盘关闭服务

9、远程服务控制

info:提供服务器信息统计

monitor:实转储收请求

slaveof:改变复制策略设置

config:运行配置Redis服务器

数据库连接池(Connection pooling)是程序启动时建立足够的数据库连接,并将这些连接组成一个连接池,由程序动态地对池中的连接进行申请,使用,释放。

简单的说:创建数据库连接是一个很耗时的 *** 作,也容易对数据库造成安全隐患。所以,在程序初始化的时候,集中创建多个数据库连接,并把他们集中管理,供程序使用,可以保证较快的数据库读写速度,还更加安全可靠。

不使用数据库连接池

如果不使用数据库连接池,对于每一次SQL *** 作,都要走一遍下面完整的流程:

1TCP建立连接的三次握手(客户端与 MySQL服务器的连接基于TCP协议)

2MySQL认证的三次我收

3真正的SQL执行

4MySQL的关闭

5TCP的四次握手关闭

可以看出来,为了执行一条SQL,需要进行大量的初始化与关闭 *** 作

使用数据库连接池

如果使用数据库连接池,那么会 事先申请(初始化)好 相关的数据库连接,然后在之后的SQL *** 作中会复用这些数据库连接, *** 作结束之后数据库也不会断开连接,而是将数据库对象放回到数据库连接池中

资源重用:由于数据库连接得到重用,避免了频繁的创建、释放连接引起的性能开销,在减少系统消耗的基础上,另一方面也增进了系统运行环境的平稳性(减少内存碎片以及数据库临时进程/线程的数量)。

更快的系统响应速度:数据库连接池在初始化过程中,往往已经创建了若干数据库连接置于池中备用。 此时连接的初始化工作均已完成。对于业务请求处理而言,直接利用现有可用连接,避免了从数据库连接初始化和释放过程的开销,从而缩减了系统整体响应时间。

统一的连接管理,避免数据库连接泄露:在较为完备的数据库连接池实现中,可根据预先的连接占用超时设定,强制收回被占用连接。从而避免了常规数据库连接 *** 作中可能出现的资源泄露。

如果说你的服务器CPU是4核i7的,连接池大小应该为((42)+1)=9

相关视频推荐

90分钟搞懂数据库连接池技术|linux后台开发

《tcp/ip详解卷一》: 150行代码拉开协议栈实现的篇章

学习地址:C/C++Linux服务器开发/后台架构师零声教育-学习视频教程-腾讯课堂

需要C/C++ Linux服务器架构师学习资料加qun 812855908 获取(资料包括 C/C++,Linux,golang技术,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK,ffmpeg 等),免费分享

源码下载

下载方式:>

方法/步骤

1、打开已经安装成功的Xshell,点击左上角新建按钮,打开新建会话属性对话框

2、连接信息验证,输入redis服务器的主机IP,端口号,名称(自定义,如test)

3、用户身份验证,方法:Password,输入连接redis服务器的用户名和密码;点击确定按钮

4、点击会话对话框中的连接按钮

5、连接成功状态

6、通过命令

redis-cli

-a

test123;连接redis数据库,其中test123数据库是名称。到这里为止,您已经通过Xshell能完整的 *** 作redis了,您会了吗?

以上就是关于如何进入redis数据库全部的内容,包括:如何进入redis数据库、Redis可以用来做数据库吗、redis getset 命令怎么使用方法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/sjk/9298670.html

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

发表评论

登录后才能评论

评论列表(0条)

保存