redis相关

本文详细介绍了使用Python操作Redis数据库的方法,包括连接、增删改查、数据类型处理及过期时间设置。同时,提供了从一个Redis实例迁移到另一个实例的完整代码示例。
import redis

r = redis.Redis(host='118.24.3.40',password='HK139bc&*',
db=15,decode_responses=True) #0-16


# r.flushdb() #清除redis里面所有的key
# r.flushall()#清除所有数据库里面所有的key
# print(r.keys('*xx')) #获取当前数据库里面所有的key,也有过滤的功能
# print(r.exists('jjj2'))#判断这个key是否存在,存在就返回1,不存在就返回0

# string
# r.set('jjj_session','sdfsgfsgdfs',60)
# r.set('xiaoming','11')#set数据
# print(r.get('nick').decode()) #获取数据
# r.set('xiaoming','11')#修改数据
# r.delete('xiaoming') #删除某个key

#hash类型
# r.hset('cnz_user','liuzhao','123456')#增加数据
# r.hset('cnz_user','jiangchuan','123456')
# r.hset('cnz_user','jiangchuan','45678') #修改
# r.hdel('cnz_user','jiangchuan') #删除里面的小key
# r.delete('cnz_user') #删除大key
# print(r.hget('cnz_user','liuzhao')) #获取指定key
# print(r.hgetall('cnz_user')) #取到key里面所有的key和value
# r.hmset('cnz_user',{"guoyanan":"123456","xiaojun":"456789"}) #批量set进去
# print(r.type('cnz_user'))
# print(r.type('xx_:1:xiaohei'))
# r.expire('cnz_user',60) #设置失效时间

#a redis => b redis

#连上两个redis a b
#1、从aredis里面获取到所有key
#2、然后在从a里面取到key的value,set到b里面



import hashlib

def reg():
username = input('username:').strip()
password = input('password:').strip()
if r.get(username):
print('用户已存在!')
else:
m = hashlib.md5(password.encode())
new_password = m.hexdigest()
r.set(username,new_password)
print('注册成功!')

def login():
username = input('username:').strip()
password = input('password:').strip()
p = r.get(username)
if p:
m = hashlib.md5(password.encode())
new_password = m.hexdigest()
if p == new_password:
print('登录成功!')
else:
print('密码错误!')
else:
print('用户不存在!')


# reg()
# login()
#1、username,password,密码要存密文的
#2、要校验用户,如果用户不存在的话,才可以注册


迁移redis

import redis

a = redis.Redis(host='118.24.3.40',password='HK139bc&*',
                db=15,decode_responses=True) #0-16
b = redis.Redis(host='118.24.3.40',password='HK139bc&*',
                db=10,decode_responses=True) #0-16

for k in a.keys():
    if a.type(k) == 'string':
        value = a.get(k)
        b.set(k,value)
    elif a.type(k) == 'hash':
        all_data = a.hgetall(k)
        b.hmset(k,all_data)
    else:
        print('其他类型不支持!')

 





转载于:https://www.cnblogs.com/Dorami/p/11142324.html

以下是一些与Redis相关的常见面试题及其答案: 1. Redis是什么?它的特点是什么? 答:Redis是一种开源的内存数据存储系统,它支持键值对的存储。其特点包括高性能、持久化、支持多种数据结构、分布式和高可用性等。 2. Redis支持哪些数据结构? 答:Redis支持多种数据结构,包括字符串(String)、哈希(Hash)、列表(List)、集合(Set)、有序集合(Sorted Set)和位图(Bitmap)等。 3. Redis的持久化机制有哪些? 答:Redis支持两种持久化机制:RDB(Redis Database)和AOF(Append Only File)。RDB是通过将内存中的数据快照保存到磁盘上的二进制文件,而AOF是通过将每个写操作追加到文件末尾来记录数据变化。 4. Redis的缓存淘汰策略有哪些? 答:Redis提供了多种缓存淘汰策略,包括LRU(Least Recently Used,最近最少使用)、LFU(Least Frequently Used,最不经常使用)、Random(随机替换)和TTL(Time To Live,过期时间)等。 5. Redis如何实现分布式? 答:Redis可以通过主从复制(Master-Slave Replication)和哨兵(Sentinel)来实现分布式。主从复制通过将主节点的数据复制到从节点上来实现数据的分布式存储,而哨兵则用于监控和管理Redis集群的高可用性。 6. Redis与Memcached的区别是什么? 答:Redis和Memcached都是内存数据存储系统,但两者有一些区别。Redis支持更多的数据结构,提供了更丰富的功能;Redis支持持久化,而Memcached不支持;Redis有更好的高可用性和分布式支持;Redis支持更多的编程语言客户端等。 7. 如何保证Redis的并发安全性? 答:Redis本身是单线程的,通过使用事件驱动机制和非阻塞IO来实现高并发。此外,Redis提供了事务和乐观锁等机制来保证并发安全性。 8. Redis的内存淘汰策略是如何工作的? 答:当Redis内存使用达到上限时,根据配置的内存淘汰策略,Redis会删除一些已有的键值对来释放内存空间。不同的策略会根据不同的规则选择要删除的键值对。 这些问题涵盖了Redis的基本概念、特点、数据结构、持久化、分布式和并发安全性等方面。在面试前,建议对Redis的原理和常用命令有一定的了解,并准备一些实际的应用场景以展示自己的经验和能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值