Redis系列(二)、数据类型之字符串String

详解Redis字符串类型 string 1.1 string可以存储以下3种类型的值: 字符串(byte string) 整数 浮点数 1.2 说明: 用户 可以 通过 给定 一个 任意 的 数值, 对 存储 着 整数 或者 浮 点数 的 字符串 执行 自 增( increment) 或者 自 减( decrement) 操作, 在 有 需要 的 时候, Redis 还会 将 整数 转换 成 浮点 数。 整数 的 取值 范围 和 系统 的 长 整数( long integer) 的 取值 范围 相同( 在 32 位 系统 上, 整数 就是 阅读详情

目录

介绍

命令行模式

増

删

改

查

计数

追加

长度

Python客户端

环境

创建连接

増

删

查

计数

追加

长度


Redis支持五种数据类型:String, Hash, List, Set, ZSet,这个系列介绍一下如何使用这些数据类型,本篇介绍使用命令行模式以及python客户端对redis进行操作,实际项目的过程中也大多是一模一样的用法。

相关内容:

Redis系列(一)、CentOS7下安装Redis6.0.3稳定版

------------------------Redis字符串类型----------------------

介绍

Redis的String类型可以是字符串(简单的字符串、复杂的字符串(例如JSON、XML))、数字(整数、浮点数),甚至是二进制(图片、音频、视频),但是值最大不能超过512MB;

 

命令行模式

进入命令行模式:

redis-cli -a password_value

redis-cli -a password_value --raw
--raw 避免中文显示乱码

 

help

使用下面的命令查看手册:

help @string

 

exists 

查看key是否存在,返回true / false, 1/0

exists key

 

増

set

set,setex,psetex,setnx

#ex为多少秒过期 px为多少毫秒过期,nx为若不存在才创建,xx为若存在才覆盖创建
set key value [ex seconds] [px milliseconds] [nx|xx]

使用set命令新增一个键值对,EX,PX用法:

127.0.0.1:6379> set name 王义凯
OK
127.0.0.1:6379> get name
"\xe7\x8e\x8b\xe4\xb9\x89\xe5\x87\xaf"   
127.0.0.1:6379> set name wang,yikai
OK
127.0.0.1:6379> get name
"wang,yikai"
127.0.0.1:6379> set name_ex wyk ex 10
OK
127.0.0.1:6379> ttl name_ex
(integer) 2
127.0.0.1:6379> ttl name_ex
(integer) -2
127.0.0.1:6379> get name_ex
(nil)
127.0.0.1:6379> set name_px wyk px 10000
OK
127.0.0.1:6379> ttl name_px
(integer) 4
127.0.0.1:6379> ttl name_px
(integer) 0
127.0.0.1:6379> get name_px
(nil)
127.0.0.1:6379> setex name_ex 10 wyk
OK
127.0.0.1:6379> ttl name_ex
(integer) 3
127.0.0.1:6379> ttl name_ex
(integer) 0
127.0.0.1:6379> get name_ex
(nil)
127.0.0.1:6379> psetex name_px 10000 wyk
OK
127.0.0.1:6379> ttl name_px
(integer) 3
127.0.0.1:6379> ttl name_px
(integer) -2
127.0.0.1:6379> get name_px
(nil)

 SET中 NX,XX用法:

127.0.0.1:6379> set name_csdn wyk
OK
127.0.0.1:6379> get name_csdn
"wyk"
127.0.0.1:6379> set name_csdn wyk2
OK
127.0.0.1:6379> get name_csdn
"wyk2"
127.0.0.1:6379> set name_nx wyk nx
OK
127.0.0.1:6379> get name_nx
"wyk"
127.0.0.1:6379> set name_nx wyk2 nx
(nil)
127.0.0.1:6379> get name_nx
"wyk"
127.0.0.1:6379> setnx name_nx wyk2
(integer) 0
127.0.0.1:6379> get name_nx
"wyk"
127.0.0.1:6379> set name_xx wyk xx
(nil)
127.0.0.1:6379> get name_xx
(nil)
127.0.0.1:6379> set name_xx wyk
OK
127.0.0.1:6379> get name_xx
"wyk"
127.0.0.1:6379> set name_xx wyk2 xx
OK
127.0.0.1:6379> get name_xx
"wyk2"

 

mset

mset,msetnx

同时定义多个键值对,mset也可以和nx一起用:

mset key1 value1 [key2 value2...] #批量创建kv,已存在的会被更新
msetnx key1 value1 [key2 value2...] #批量创建kv,所有key不存在才会创建
127.0.0.1:6379> mset k1 a k2 b k3 c
OK
127.0.0.1:6379> mget k1 k2 k3
1) "a"
2) "b"
3) "c"

 

删

del

使用del命令删除数据,可批量可单个删除:

 del key1 [key2 key3...]
127.0.0.1:6379> del k1 k2 k3
(integer) 3
127.0.0.1:6379> del name_xx
(integer) 1
127.0.0.1:6379> mget k1 k2 k3 name_xx name_nx
1) (nil)
2) (nil)
3) (nil)
4) (nil)
5) "wyk"

改

set

上面set中介绍了,如果对同一个key进行set即可更新该数据:

127.0.0.1:6379> set email wyk@csdn.com
OK
127.0.0.1:6379> get email
"wyk@csdn.com"
127.0.0.1:6379> set email rick@csdn.com
OK
127.0.0.1:6379> get email
"rick@csdn.com"

getset

等同于get+set,执行此命令返回get的结果,然后将该key更新为新的value,下次再get的时候查到的就是新的value:

getset key new_value
>>old_value
get key
>>new_value

setrange

对指定下标的字符串进行更新,下标从0开始算起:

setrange key offeset value

查

keys

查看所有的key

keys *

 

get

使用get获得指定key的value

get key

mget

使用mget批量获得指定keys的values

mget key1 [key2 key3...]

getrange

 从字符串的指定开始结束下标截取字符串返回,下标从0开始算起:

getrange key start end

计数

incr

对指定的key的value加1,递增步长默认1,如果key不存在,其初始值为0,在incr之后其值为1,如果value的值不能转为整型,如hello,该操作将执行失败并返回相应的错误信息:

incr key

 

decr

对指定的key的value减1,递减步长默认1,如果key不存在,其初始值为0,在decr之后其值为-1,如果value的值不能转为整型,如hello,该操作将执行失败并返回相应的错误信息:

decr key

 

incrby

对指定的key的value加指定的步长,递增步长可指定,如果key不存在,其初始值为0,在incrby之后其值为步长,如果value的值不能转为整型,如hello,该操作将执行失败并返回相应的错误信息:

#步长increment为整数,当为负数时效果等于递减
incrby key increment

 

decrby

对指定的key的value减指定的步长,递减步长可指定,如果key不存在,其初始值为0,在decrby之后其值为步长的负数,如果value的值不能转为整型,如hello,该操作将执行失败并返回相应的错误信息:

#步长increment为整数,当为负数时效果等于递増
decrby key increment

incrbyfloat

效果与incrby类似,此方法支持传浮点型的值,正数为增,负数为减
 

追加

append

在字符串最后面追加子串:

append key value

 

长度

strlen

返回字符串的长度:

strlen key

 

Python客户端

下面介绍如何在python客户端实现和上面一样的操作,每个函数的含义不多赘述,在上面都有很详细的介绍了。

环境

#Redis6.0.3
pip install redis==3.4.1

创建连接

import redis

#redis返回的结果默认是字节类型,设置decode_responses=True改成字符串
#直接获得连接
r = redis.StrictRedis(host='wykd', port=6379, db=0,password='123456', decode_responses=True)

#使用连接池创建连接
pool = redis.ConnectionPool(host='wykd', port=6379, password='123456', decode_responses=True)
r1 = redis.Redis(connection_pool=pool)
r2 = redis.Redis(connection_pool=pool)

増

set

通过这些函数可以看到,函数名和上面的redis命令行模式里一样,甚至参数也是一样的使用方式:

r.set('python_key1','python_value1')
r.get('python_key1')
r.set('py_ex','ppp',ex=10)     #创建10秒过期的kv,单位秒
r.ttl('py_ex')                 #查看剩余过期时间,单位为秒
r.set('py_ex','ppp',px=10000)  #创建10000毫秒过期的kv,单位毫秒
r.set('py','3.7',nx=True)      #当不存在key时才会创建
r.set('py','3.7.1',xx=True)    #当key存在时才会更新

mset

r.mset({'k1':'v1','k2':'v2','k3':'v3'}) #批量创建更新key
r.msetnx({'k1':'v1','k5':'v5'}) #所有key都不存在的时候才会批量创建
r.msetnx({'k4':'v4','k5':'v5'})

删

del

r.delete('k5') #批量或逐个删指定的key

改

set

r.set('A','aaa')
r.set('A','bbb') #key相同会被更新
r.get('A')

getset

r.get('A') #old value
r.getset('A','ccc') #先返回old value 再修改为new value
r.get('A') #new value

setrange

r.setrange('A',0,'AA') #从指定下标开始修改字符串

查

keys

#参数为pattern,返回所有的key的列表
r.keys('*')

get

r.get('A')

 

mget

r.mget(['k1','k2','k3','k5']) #传参为列表

 

getrange

r.getrange('A',0,2) #根据start和end下标截取字符串返回

计数

incr

python客户端中incr和incrby的函数一样:

源码:

因此我们可以使用amount参数来选择步长:

#步长可以为负数,但必须是整数
r.set('int1','1')
r.incr('int1') #默认步长为1
r.incrby('int1') #默认步长为1
r.incr('int1',amount=2) #设置步长为2
r.incrby('int1',amount=2) #设置步长为2

decr

python客户端中decr和decrby的函数一样:

源码:

因此我们可以使用amount参数来选择步长:

#步长可以为负数,但必须是整数
r.decrby('int1',amount=2) #设置步长为2
r.decrby('int1',amount=-2) #设置步长为-2
r.decr('int1',amount=-2) #设置步长为-2
r.decr('int1',amount=2) #设置步长为2

 

incrby

同incr

decrby

同decr

 

追加

append

r.append('A','bcd') #从value字符串后面追加子串,返回追加后的字符串长度
r.append('A','efg')

长度

strlen

r.strlen('A') #返回value字符串的长度

 

希望本文对你有帮助,请点个赞鼓励一下作者吧~ 谢谢!

Redis-五大数据类型-String(字符串) - String是Redis最基本的类型,一个key对应一个value。 - String是二进制安全的,意味着String可以包含任何数据,比如序列化对象或者一张图片。 - String最多可以放512M的数据。 阅读详情

相关推荐

Redis系列之String

前言 上节我们介绍了Redis的key相关操作,前面也谈到Redis中有5大数据类型,今天我们就来谈谈5大数据类型之一:String类型,我们主要介绍Redis中String的用法。 基本语法 String的基本语法:command keyname 常见命令 设置指定 key 的值:set keyname value 获取指定key的值:get keyname 按范围返回字符串中值:getrange keyname startindex endindex ...

吭哧吭哧快乐的小牛码 2万+

Redis的五种常用数据类型

设置了一个键count,初始值为10。然后使用DECRBY命令递减键的值5,返回递减后的值5。 首先设置了一个键mykey,值为"hello"。然后使用APPEND命令将"value"追加到mykey的末尾,返回追加后字符串的总长度5。最后使用GET命令获取mykey的值,得到"hello world"。 在这个例子中,设置了一个键mykey,值为"hello"。然后使用STRLEN命令获取mykey的值的长度,返回值为5。 设置了一个键mykey,值为"This is a string"。然后使用GETR

weixin_66083745的博客 157

Redis系列之数据类型

Redis支持数据类型有以下5种:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合),下面我们将一一介绍。 String(字符串) string是redis最基本的类型:一个key对应一个value,一个key最大能存储512MB; string类型是二进制安全的:意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象 ,为什么说S听类型是二进制安全的呢?这是由于Redis内部对String的定义是一.

吭哧吭哧快乐的小牛码 2万+

redis 数据类型之字符串(string) 详细介绍

字符串(string)键是Redis最基本的键值对类型,这种类型的键值对会在数据库中把单独的一个键和单独的一个值关联起来,被关联的键和值既可以是普通的文字数据,也可以是图片、视频、音频、压缩文件等更为复杂的二进制数据。

一个火星程序员的专栏 2523

外贸英文函电第三版张梅英课后习题答案解析

我参加了一些外贸模拟竞赛,将所学知识运用到实际工作中,取得了不错的成绩。此外,我还积极参与了一些外贸实践活动,如参加实习、担任志愿者等,从中积累更多的经验。在这个过程中,我逐渐摸索出了一套适合自己的学习方法,不仅提高了学习效果,还增强了自信心。通过学习这本书,我们可以提高自己在外贸领域的沟通能力,更好地应对未来的工作挑战。在学习这本书的过程中,我遇到了一些困难,比如对某些专业术语的理解不够透彻,对信件的结构和格式掌握不够熟练。出版社: 高等教育出版社。上传者: ʚ河西撒手没ɞ。

weixin_58833001的博客 1421

【Cadence】Virtuoso@LayoutXL 差分电路版图同步修改

对于差分电路,器件和部分走线通常是对称的,只需要画一半,另一半通过镜像操作完成。因此,需要对差分电路进行同步的修改,保证电路的差分对称性和正确的连接关系。然而,通常版图会经过多次修改,修改的部分可能在镜像的时候被遗漏。左边画了金属块,右边也出现了同步出现了金属块。进入group会有同步复制的提示。

乾巽的博客 3038

redis之字符串数据类型

无

qq_44632658的博客 383

使用Anaconda和conda快速搭建YOLO开发环境

本文详细介绍了如何使用Anaconda和conda为YOLO目标检测项目快速搭建独立、纯净的开发环境。通过创建虚拟环境,有效解决了Python包版本冲突和CUDA兼容性问题,并指导安装GPU版PyTorch等核心依赖,最后通过验证脚本确保环境配置成功,为YOLO开发提供了稳定可靠的基础。

weixin_28829629的博客 155

redis(4):数据结构-String字符串

一、热身 二、字符串类型 三、散列类型 四、列表类型 五、集合类型 六、有序集合类型

water Wang 1万+

EB TRESOS 29.0.0安装教程用于MCAL配置开发

本文介绍的搭建基于NXP官网提供EB软件,进行基于标准AUTOSAR软件底层驱动配置的开发

qq_53260940的博客 1860

制作INCA和CANape通用的A2L

CANape和INCA通用的A2L配置与修改

赞的博客 5952

【redis】Redis五种常用数据类型和内部编码,以及对String字符串类型的总结

目录​编辑 一.五种常用数据类型和内部编码1.五种常用数据类型和内部编码2.内部编码方式1.string 类型 2.hash类型3.list类型4.set类型5.zset(有序集合)类型6.Redis这样设计有两个好处:3.单线程架构 redis单线程为什么可以做到高性能?(面试重点)二.字符串类型的总结1.字符串类型的常用命令1.set 及其选项1.普通的set语句2. nx选项3. xx选项4. ex seconds 或 px milliseconds 选项2.get命令3.mset,mget2.计数命

xiaoxie8023的博客 3436

使用OpenGL加载和显示DXF格式的3D模型文件编程

这样,我们就完成了使用OpenGL加载和显示DXF格式的3D模型文件的编程。通过实现加载函数和绘制回调函数,我们能够读取DXF文件的数据并使用OpenGL绘制出来。请注意,这只是一个简单的例子,仅涵盖了基本的加载和显示功能。在本文中,我们将探讨如何使用OpenGL编程加载和显示DXF(Drawing Exchange Format)格式的3D模型文件。DXF是一种通用的CAD(计算机辅助设计)文件格式,常用于存储和交换2D和3D图形数据。使用OpenGL加载和显示DXF格式的3D模型文件编程。

2301_79331421的博客 408

Redis 数据类型 String 字符串

⼀个分布式 Web 服务将⽤⼾的 Session 信息(例如⽤⼾登录信息)保存在各⾃的服务器中,但这样会造成⼀个问题:出于负载均衡的考虑,分布式服务会将⽤⼾的访问请求均衡到不同的服务器上,并且通常⽆法保证⽤⼾每次请求都会被均衡到同⼀台服务器上,这样当⽤⼾刷新⼀次访问是可能会发现需要重新登录,这个问题是⽤⼾⽆法容忍的。由于 Redis 内部存储字符串完全是按照⼆进制流的形式保存的,所以 Redis 是不处理字符集编码问题的,客⼾端传⼊的命令中使⽤的是什么字符集编码,就存储什么字符集编码。

2301_79881188的博客 1193

人工智能训练师三级考试题型全解析|190道真题样例+30天备考路线

人工智能训练师三级考试并不神秘:理论考190道选择题(刷题就能过),实操考代码+方案设计(练练就会)。核心是花时间——30天系统备考,足以从容通过。如果你想从零开始系统备考,覆盖所有考点和实操技能,欢迎查看我的专栏:📖《人工智能训练师三级·从零到拿证完全指南》80篇系统化内容,覆盖报名、备考、冲刺、拿证全流程六大模块知识点逐个击破,每个考点都讲透实操代码题手把手教学,附带完整参考代码高频考点速记 + 易错题精讲 + 3套模拟试卷30天备考计划 + 冲刺复习策略。

白话机器学习 6015

竞赛经验——挑战杯、互联网加、北斗杯、微软创新杯、计算机设计等比赛教训与经验

最近参加一些比赛,北斗杯、挑战者杯、微软创新杯等比赛,每次比赛都有不少需要总结的地方,特别是项目展示上技巧很多,总结一下。 首先最重要的是作品自身硬!自身的作品完成度不高,或者是没有创新点,就没必要参加了。 比如是出去比赛的话,我反正每次碰到最多的是智慧农场、智慧家居之类,不知道为啥这种的太多了。如果是创业型比赛,评委基本会问小米已经做得很好了很便宜了,你的优势在哪里?这些都是常见的问题提前要...

沉迷单车的追风少年 7321

【Redis入门到精通二】Redis核心数据类型(String,Hash)详解

Redis操作字符串类型常见的有以下命令set,get,mget,mset,setnx,setxx,incr,incrby,decr,decrby,incrbyfloat,append,getrange,setrange,strlen。下面将按顺序依次介绍用法。hash类型的常见命令有hset,hget,hexists,hdel,hkeys,hvals,hgetall,hmget,hlen,hsetnx,hincrby,hincrbyfloat,hstrlen。数字,可以是整型或者浮点型;

2203_75565612的博客 1740

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

redis—String字符串

redis数据类型String字符串详解

终为nullptr 2832

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

【Redis学习】String字符串

Redis中String类型的相关指令和内部编码情况,及String类型的典型使用场景!!!

2301_80220607的博客 1904

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

redis 数据类型新手练习系列——string类型

(9)发布/订阅(Pub/Sub):一种消息通信模式,允许客户端订阅消息通道,并接收发布到该通道的 消息。(11)模块(Modules):Redis 支持动态加载模块,可以扩展 Redis 的功能。(1)string(字符串): 基本的数据存储单元,可以存储字符串、整数或者浮点数。(10)流(Streams):用于消息队列和日志存储,支持消息的持久化和时间排序。(3)list(列表):一个简单的列表,可以存储一系列的字符串元素。(4)set(集合):一个无序集合,可以存储不重复的字符串元素。

hnlucky的博客 866

快速入门Redis系列(2)——Redis的数据类型详解

        作为快速入门Redis系列的第二篇博客,本篇为大家介绍的是Redis的数据类型。         码字不易,先赞后看! 文章目录1. redis的数据类型1.1 redis 当中对字符串string的操作1.2 redis...

大数据梦想家 1万+

【Redis】redis5种数据类型(string)

redis五种数据类型和内部编码的介绍;redis单线程模型的介绍;string字符串类型相关命令:set设置key vlaue,get通过key获取value...以及当value值为整数时,进行加减操作,APPEND追加字符串,GETRANGE获取子串,SETRANGE覆盖子串的一部分,STRLEN获取字符串长度;string内部编码的实现。

lzb_kkk的博客 1168

Redis数据类型之String

如果是以--raw启动客户端,当截取汉字时,由于汉字的存储是字节,因此可能截取不完整的汉字字节,在通过字符集编码utf-8转化,可能会乱码。注意:redis不会对字符集编码做任何处理(也就是redis只认字节不认字符),由于这里使用FinalShell终端连接redis服务器,,而终端默认的字符集编码是utf-8(此编码下一个汉字字符占3个字节),因此使用终端存入汉字到redis中,“张三”就占6个字节。时间复杂度O(N),N表示新value的长度,通常N比较短,因此实际体验是O(1)。

sniper_fandc的博客 954

【Redis】深入探索 Redis 的数据类型 —— 字符串 String

在 Redis 中,所有的 key 的类型都是 string 类型的,并且其他几种数据类型也都是在字符串类型的基础上构建的,例如列表和集合的元素的类型都是字符串类型的。在 Redis 中,字符串都是直接按照二进制的形式储存的,因此在使用 Redis 的时候,不需要像 MySQL 那样考虑编码问题(编码不匹配则会出现乱码)。所以 Redis 不会处理字符集的编码问题,客户端传入的命令中使用的是什么字符集编码,就存储什么字符集编码。

qq_61635026的博客 2267

第五节 Redis 字符串(String)、Redis 哈希(Hash)

第五节 Redis 字符串(String)、Redis 哈希(Hash)

2501_92886572的博客 1218

Redis 7.x 系列【6】数据类型之字符串(String)

在 Redis 中, String 类型是最基本的数据类型,是二进制安全的,可以存储任意类型的数据,文本、数字、图片或者序列化的对象 。

记录知识、锤炼自我 1293
上一篇: 在Python中使用ibis,impyla,pyhive,pyspark连接Kerberos安全认证的Hive、Impala
下一篇: Redis系列(三)、数据类型之哈希Hash
王义凯_Rick
王义凯_Rick 领域专家: 大数据技术领域 领域专家: 大数据技术领域
博客等级 码龄14年 858粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王义凯_Rick

遇见即是缘,路过就给个评论吧~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值