欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

4.redis入门命令以及string类型介绍

程序员文章站 2024-02-07 17:13:22
...

Redis提供ping命令来测试客户端与redis连接是否正常,返回pong表示正常。127.0.0.1:6389 pingPONG echo打印命令127.0.0.1:6389 echo hi boy!hi boy! 通过config get与config set,能动态获取与设置redis配置参数,但不是什么参数都能动态设置,如PORT参数就不

Redis提供ping命令来测试客户端与redis连接是否正常,返回pong表示正常。 127.0.0.1:6389> ping PONG
echo打印命令 127.0.0.1:6389> echo "hi boy!" "hi boy!"
通过config get与config set,能动态获取与设置redis配置参数,但不是什么参数都能动态设置,如PORT参数就不行。要修改端口,必须重启数据库。 127.0.0.1:6389> config get port 1) "port" 2) "6389" 127.0.0.1:6389> config set loglevel warning OK select命令选择数据库 redis的数据库,相当于mysql的数据库,也像oracle的schema。 默认redis有16个数据库,编号从0开始,不支持用户自定义数据库名称。 127.0.0.1:6389> config get databases 1) "databases" 2) "16" 可以通过修改databases参数来修改数据库个数,不能动态修改。
keys返回匹配的key列表 redis 127.0.0.1:6379> keys fwy* 1) "fwy2" 2) "fwy" KEYS命令返回当前数据库的所有匹配的key,会遍历所有key来查找,所以当KEY很多时会影响性能,不建议在生产环境用。 ? 匹配一个字符 * 匹配任意个字符 \x转义,例如\?匹配? 127.0.0.1:6389> set "?" fwy OK 127.0.0.1:6389> get "\?" "fwy"
exist判断是否存在这个key 127.0.0.1:6389> exists fwy (integer) 1
del命令删除key 127.0.0.1:6389> del fwy (integer) 1 127.0.0.1:6389> del fwy (integer) 0 因为DEL命令不支持通配符,但是可以配合linux的管道等命令来删除符合规则的key。 redis-cli keys "users*" | xargs redis-cli del 或redis-cli del `redis-cli keys "user:*"`
获得键值的数据类型:type 127.0.0.1:6379> type fwy2 string
dbsize --返回数据库key的条数 quit退出
重命名某个key rename fwy fwy3 如果fwy3已经存在回覆盖掉 renamenx fwy fwy3 如果fwy3存在会失败 设置某个Key在多少秒后过期,即自动被系统删除 expire fwy3 10 ttl 返回某个key还有多长时间过期,返回秒数。 flushdb:清空当前数据库数据 flushall:清空所有数据库数据 randomkey:随机获得已经存在的key
key的名称:由于key 不是binary safe的字符串,所以像"my key"和"mykey\n"这样包含空格和换行的key 是不允许的。
redis 提供五种数据类型:string,hash,list,set 及sorted set string类型是Redis最基本的数据类型,一个键最大能存储512MB。存的是二进制的存储,所以可以包含任何数据,比如JPG图片或者序列化的对象。其他类型只是组织字符串的形式不同。例如,list类型是以列表的形式组织字符串,set是以集合的类型组织字符串而已。
set key1 fwy1 --设置key的值,key已经存在就会覆盖 get key1 --获取key1的值 setnx key1 fwy1 --设置Key的值,如果key已经存在会失败。 getset key1 value1 先获取key1的值,再设置key1的值为value1,如果Key不存在会返回nil,但仍会设置新值。 mget key1 key2 key3..keyn 一次获取多个key的值,如果对应key不存在会返回nil redis 127.0.0.1:6379> mget fwy4 fwy2 fwy 1) "afwe" 2) (nil) 3) "22" mset fwy4 aaa fwy2 bbb fwy ccc 一次设置多个key的值, msetnx key1 value1 key2 values --与上面一样,但不会覆盖已有值。 incr 对一个value是数字的增1,不是整数的string会报错,incr一个不存在的值会将value设为1。 当我们用type看返回类型是,仍然是string。只是它内部有函数去判断这个string是否数字。 decr 与上面效果相反。 incrby key1 5 对key加上指定值,key不存在时会设置并认为key值原来为0 decrby key1 5 与上面相反,其实用上面的incrby,值为负数能实现相同的效果 incrbyfloat bus 2.7 为一个Key增加一个双精度浮点数 127.0.0.1:6389> incrbyfloat bus 1e+2 "100" strlen 返回string长度 127.0.0.1:6389> set fwy 你好 OK 127.0.0.1:6389> get fwy "\xe4\xbd\xa0\xe5\xa5\xbd" 127.0.0.1:6389> strlen fwy (integer) 6 Redis接收到的是使用UTF-8编码的中文。
append可以往一个key追加value值。 redis 127.0.0.1:6379> exists fwy (integer) 0 redis 127.0.0.1:6379> append fwy "hello " (integer) 6 redis 127.0.0.1:6379> append fwy " world" (integer) 12 redis 127.0.0.1:6379> get fwy "hello world" substr求子串,一个例子可以证明一切。 redis 127.0.0.1:6379> set s "This is a string" OK redis 127.0.0.1:6379> substr s 0 3 "This" redis 127.0.0.1:6379> substr s -3 -1 "ing" redis 127.0.0.1:6379> substr s 0 -1 "This is a string" redis 127.0.0.1:6379> substr s 9 10000 " string" del删除key redis 127.0.0.1:6379> del fwy4 fwy5 (integer) 1 我这里fwy5是不存在的,所以只影响了1行
位操作 set foo bar bar3个字母对应的ASCII码是98,97,114.转换成二进制后分别为1100010、1100001、1110010 127.0.0.1:6389> getbit foo 0 (integer) 0 127.0.0.1:6389> getbit foo 6 (integer) 1 foo的位下标从左到右,从0开始算。如果要获取的超出了key的二进制位,getbit foo 100000将返回0. setbit命令可以设置二进制位,返回值是该位置的旧值。如我们将foo键值设置为aar,将foo键的二进制位的索引第6位设为0,第7位设为1即可。 setbit foo 6 0 setbit foo 7 1 127.0.0.1:6389> get foo "aar" bitcount foo 获得字符串中二进制位是1的个数 bitop命令对多个string进行位运算,支持and,or,xor,not等。 set foo1 bar set foo2 aar bitop or destkey foo1 foo2 127.0.0.1:6389> get destkey "car"