启动redis服务器:sudo redis-server /etc/redis/redis.conf

通过客户端进入,执行命令:redis-cli

测试服务是否可用:ping

查看redis当前状态:ps -ajx|grep redis

停止redis服务:sudo service redis stop或者:redis-cli shutdown

启动redis服务:sudo service redis start

如果修改配置文件后启动服务器:sudo redis-server /etc/redis/redis.conf

重启redis服务:sudo service redis restart

设置键值name,内容是hello world:

   set name "hello world"

设置键值及过期时间,以秒为单位:

  setex name 5 "hello world"

设置多个键值-mset:

  mset key1 "abc" key2 "edf"

根据多个键获取多个值

  mget key1 key2

设置数字类型的key: set "num" 10

  将key对应的value加1:incr num

  将key对应的value加整数:incrby num 10

  将key对应的value减1:decr num

  将key对应的value减整数:decrby num 10

追加值(append):append num 00,在后面拼接字符串

得到string类型的长度:strlen num

查看所有的键:keys *

判断键是否存在,如果存在返回1,不存在返回0:EXISTS num

查看键对应的value的类型:type num

删除键及对应的值,删除成功返回1,失败返回0: del num

设置和查看过期时间,以秒为单位: EXPIRE num 5  #修改为5秒过期

查看有效时间,以秒为单位:ttl num

hash

设置单个属性HSET:hset py3 "name" "gj"

设置多个属性HMSET: hmset py3 "name" "hr" "gender" 0

获取一个属性的值 HGET: hget py3 name

获取多个属性的值HMGET: hmget py3 "name" "gender"

获取所有属性和值HGETALL:hgetall py3

获取所有的属性HKEYS:hkeys py3

获取所有值HVALS: hvals py3

返回包含属性的个数HLEN: hlen py3

判断属性是否存在HEXISTS,存在返回1,不存在返回0: HEXISTS py3 name

删除属性及值,不会删除py3下的其他属性: hdel py3 name

                    del py3 所有的都删除

list

在头部插入数据LPUSH(爬虫用到这个语句)lpush py5 "abc" "efg"

查看数据  lrange py5 0 -1   ps:py5表示集合,0表示集合开始,-1表示集合结尾

查看类型  type py5

在尾部插入数据RPUSH :rpush py5 "haha" "xixi"

在一个元素的前|后插入新元素linsert :

 元素的前插入新元素 linsert py5 after "haha" "hehe"

 元素的后插入新元素 linsert py5 before "haha" "123"

根据下标设置值LSET :lset py5 0  "hello"

          lset py5 -1  "xixihaha"

返回存储在 key 的列表里指定范围内的元素: lrange py5 0 -1

                    lrange py5 2 -1

移除并且返回 key 对应的 list 的第一个元素: lpop py5

移除并返回存于 key 的 list 的最后一个元素: rpop py5

裁剪列表,改为原集合的一个子集 :ltrim py5 2 3

返回存储在 key 里的list的长度: llen py5

返回列表里索引对应的元素:lindex py5 0

             lindex py5 3

set 

添加元素--SADD: SADD key member [member ...]

       ps:sadd py6 "abc" "def" "123"

返回key集合所有的元素--SMEMBERS:smembers py6

准备数据:

  sadd py6 defg 123 abc 456

  sadd py7 abc 123 world 456

求多个集合的交集:sinter py6 py7

求某集合与其它集合的差集:sdiff py6 py7

zset

添加--ZADD:ZADD key score member [score member ...]

  ps: zadd py8 3 "you!" 1 "I" 2 "love"

返回指定范围内的元素--ZRANGE : zrange py8 0 -1

返回元素个数--ZCARD:zcard py8

返回有序集key中,score(权重)值在min和max之间的成员--ZCOUNT :ZCOUNT key min max

  ps:zcount py8 0 1

返回有序集key中,成员member的score值--ZSCORE :ZSCORE key member

  ps:zscore py8 "I"

Redis与Python交互

综合案例:用户登录:

需求说明

业务过程如下:

  输入用户名、密码

  密码加密

  判断redis中是否记录了用户名,如果有则成功

  如果redis中没有用户名,则到mysql中查询

  从mysql中查询成功后,将用户名记录到redis中

1、先完成python与redis的交互并且封装在模块myredis.py中:

import redis

class RedisHelper():
def __init__(self,host='192.168.31.21',port=6379):
self.__redis = redis.StrictRedis(host, port)
def get(self,key):
if self.__redis.exists(key):
return self.__redis.get(key)
else:
return ""
def set(self,key,value):
self.__redis.set(key,value) if __name__ == "__main__": red = RedisHelper()
#name是key,hello world是值
red.set("name","hello world")
#根据key得到值
print(red.get("name"))#b'hello world'

2、再完成python与mysql交互并且封装成模块mysql.py:

import pymysql
class MysqlHelper(object):
def __init__(self,host):
self.host = host
self.port = 3306
self.db = "mysql"
self.user = "xxx" #mysql用户名
self.password = "123456" #mysql密码
self.charset = "utf8" #打开链接,返回的对象用conn属性接收
def open(self):
self.conn = pymysql.connect(
host=self.host,
port=self.port,
db=self.db,
user=self.user,
password=self.password,
charset=self.charset
)
#得到cursor
self.cursor = self.conn.cursor()
#关闭链接
def close(self):
self.cursor.close()
self.conn.close()
#曾删改
def cur(self,sql,parms=[]):
try:
self.open()
self.cursor.execute(sql,parms)
#提交事务
self.conn.commit()
self.close()
print("执行完毕!")
except Exception as result:
print(result) #得到所以数据
def get_all(self,sql,parms=[]):
try:
self.open()
self.cursor.execute(sql,parms)
#返回所以的结果集
result = self.cursor.fetchall()
self.close()
return result
except Exception as result:
print(result) # 得到一条数据
def get_one(self, sql, parms=[]):
try:
self.open()
self.cursor.execute(sql, parms)
result = self.cursor.fetchone()
self.close()
return result
except Exception as result:
print(result) #插入数据
def insert(self,sql,parms=[]):
self.__edit(sql,parms)
#删除数据
def delete(self,sql,parms=[]):
self.__edit(sql,parms) #修改数据
def update(self,sql,parms=[]):
self.__edit(sql, parms) #修改数据
def __edit(self,sql,parms=[]):
try:
self.open()
count = self.cursor.execute(sql,parms)
#提交事务
self.conn.commit()
self.close()
print("执行完毕!")
return count
except Exception as result:
print(result)

3、最后实现用户登录:

from myredis import RedisHelper
from mysql import MysqlHelper
import hashlib name = input("请输入用户名:")
pwd = input("请输入密码:") sha1=hashlib.sha1()
sha1.update(pwd.encode("utf-8"))
pwd1=sha1.hexdigest() try:
redis=RedisHelper()
if redis.get('uname')==name:
print('ok')
else:
mysql = MysqlHelper('localhost')
upwd = mysql.get_one('select upwd from userinfos where uname=%s',[name])
if upwd==None:
print('用户名错误')
elif upwd[0]==pwd1:
redis.set('uname', name)
print('登录成功')
else:
print("密码错误")
except Exception as e:
print(e.message)

数据库之redis的更多相关文章

  1. python爬取大众点评并写入mongodb数据库和redis数据库

    抓取大众点评首页左侧信息,如图: 我们要实现把中文名字都存到mongodb,而每个链接存入redis数据库. 因为将数据存到mongodb时每一个信息都会有一个对应的id,那样就方便我们存入redis ...

  2. 数据库之redis篇(3)—— Python操作redis

    虽然前面两篇已经说了redis的一些配置安装什么的,篇幅有点长,可能看完了也不知道怎么操作,这里再浓缩一下: 什么是redis redis完全开源免费的,遵守BSD协议,是一个高性能的非关系型key- ...

  3. Linux实战教学笔记45:NoSQL数据库之redis持久化存储(一)

    第1章 redis存储系统 1.1 redis概述 REmote DIctionary Server(Redis)是一个基于key-value键值对的持久化数据库存储系统.redis和大名鼎鼎的Mem ...

  4. 阿里云、青云、腾讯云服务器,Mysql数据库,Redis等产品性能对比

    阿里云.青云.腾讯云服务器,Mysql数据库,Redis等产品都使用过,对比维度很多就不一一放出.直接放结论吧:买的腾讯(金融专区)服务器,Mysql(TDSql)把所有项目转到腾讯云,但是没有用腾讯 ...

  5. Python操作nosql数据库之redis

    一.NoSQL的操作 NoSQL,泛指非关系型的数据库.随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不 ...

  6. 非关系型数据库(NOSQL)-Redis

    整理一波Redis 简介,与memcached比较 官网:http://redis.io Redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括 ...

  7. key-value键值型数据库:Redis

    key-value键值型数据库:Redis redis Redis是in-memory型(内存型)的键值数据库,数据在磁盘上是持久的,键类型是字符串,值类型是字符串.字符串集合(Set).sorted ...

  8. NOSQL数据库之 REDIS

    NOSQL数据库之 REDIS 一.NOSQL 1.简介 NoSQL ,(Not Only SQL),泛指非关系型数据库. 特点: NoSQL 通常是以key-value形式存储, 不支持SQL语句, ...

  9. OAuth + Security - 5 - Token存储升级(数据库、Redis)

    PS:此文章为系列文章,建议从第一篇开始阅读. 在我们之前的文章中,我们当时获取到Token令牌时,此时的令牌时存储在内存中的,这样显然不利于我们程序的扩展,所以为了解决这个问题,官方给我们还提供了其 ...

  10. .net core的配置介绍(二):自定义配置(Zookeeper,数据库,Redis)

    上一篇介绍了.net core的配置原理已经系统提供的一些常用的配置,但有时我们的配置是存放在Zookeeper,DB,Redis中的,这就需要我们自己去实现集成了. 这里再介绍几个我们用的多的配置集 ...

随机推荐

  1. 【日常记录】【unity3d】 2D跳跃过快导致角色某帧陷入地面

    如果角色运动过快会导致嵌入地面再反弹出来 : 可以使用更高质量的检测方式 "Continuous" :就可以解决这个问题

  2. python是如何找到对应的package的?

    我们在写python代码或者阅读别人的代码时,可能会碰到对应module无法找到的问题,这时如何解决呢?我们如果对python解释器如何查找对应的module有比较深刻的理解,那么我们就可以轻松解决相 ...

  3. Oracle EBS 锁

    这里仅提供查询锁和解锁.有时,锁是正常的,所以杀掉正锁着的进程有一定的风险性. 具体步骤如下: -- 1.0 查看 holder的进程 , 'Holder: ', 'Waiter: ') || sid ...

  4. ASP.NET MVC 5搭建自己的视图基架 (CodeTemplate)

    我们知道,在MVC项目中添加视图时,在添加面板有模板可以选择,这里会有人疑问,这个模板位于哪里?我可以搭建自己的基架吗? 首先回答第二个问题,答案是当然可以 我这里使用的是Visual Studio ...

  5. Java各种数据库连接大全

    1.Oracle8/8i/9i数据库(thin模式) Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); ...

  6. django 实用工具dj-database-url 快速配置数据库

    dj-database-url Github>>> django快速配置多种数据库 $ pip install dj-database-url Configure your data ...

  7. 铁乐学python_day03-作业

    1.有变量name = "aleX leNb" 完成如下操作: 移除name变量对应的值两边的空格,并输出处理结果 n1 = name.strip() print(n1) 结果:a ...

  8. 题解 P1868 【饥饿的奶牛】

    题目链接:P1868 饥饿的奶牛 题面 有一条奶牛冲出了围栏,来到了一处圣地(对于奶牛来说),上面用牛语写着一段文字. 现用汉语翻译为: 有N个区间,每个区间x,y表示提供的x~y共y-x+1堆优质牧 ...

  9. Css中路径data用法

    Data URI scheme是在RFC2397中定义的,目的是将一些小的数据,直接嵌入到网页中,从而不用再从外部文件载入. data:,文本数据 data:text/plain,文本数据 data: ...

  10. SGU---104 DP

    题目链接: https://cn.vjudge.net/problem/SGU-104 题目大意: 假设你想以最美观的方式布置花店的橱窗,你有F束花,每束花的品种都不一样,同时,你至少有同样数量的花瓶 ...