Redis基本操作
来源:互联网 发布:pkpm软件4.1 编辑:程序博客网 时间:2024/05/17 01:16
最近工作可能要使用Redis,首先对Redis的基本操作有一个初步的了解吧,这里的基本操作主要是Redis-cli的命令,至于JavaAPI的操作后面再了解一下分享@@。。
首先,要知道Redis中默认有16个数据库,数据库名字为0-15,在Redis-cli初始化时默认使用0号数据库。
其次应当知道Redis是一种面向“键/值”对儿数据类型的内存数据库。
其中Redis的键只能是字符串,Redis的值支持多种数据类型:
- 字符串 string
- 哈希 hash
- 字符串 list
- 集合 set
- 有序集合 sorted set
- HyperLogLog结构
一、命令示例
1、string命令
127.0.0.1:6379> set hello world #通过set命令设置值,也可覆盖原有值。mset可以同时设置多个OK 127.0.0.1:6379> get hello #通过get命令获取该键对应的值。mget可同时取出多个"world" 127.0.0.1:6379> append hello world #该键已经存在,因此返回追加后Value的长度(integer) 10127.0.0.1:6379> strlen hello #返回键对应值的长度(integer) 10127.0.0.1:6379> exists hello #返回key是否存在,1代表存在,0代表不存在。(integer) 1127.0.0.1:6379> incr num #key值递增1,如果不存在,默认值0递增1,非数值会抛错(integer) 1127.0.0.1:6379> decr num #key值递减1(integer) 0127.0.0.1:6379> incrby num 5 #key值增加指定值(integer) 5 127.0.0.1:6379> decrby num 5 #key值减少指定值(integer) 0127.0.0.1:6379> del num #删除已有键(integer) 1
2、hash命令
hash类型的值存储了字段和字段值的映射,字段和字段值只能是字符串,不支持其他数据类型。
127.0.0.1:6379> hset homeset network www.sina.cn #hset命令添加hash类型数据(integer) 1127.0.0.1:6379> hget homeset baidu #hget命令读取指定hash列表中key值"www.baidu.com"127.0.0.1:6379> hexists homeset baidu #判断键中属性是否存在(integer) 1127.0.0.1:6379> hincrby num incre 5 #键值增加指定数值(hash类型中没有加一命令)(integer) 6127.0.0.1:6379> hdel num incre #删除hash列表中指定键值。(integer) 1127.0.0.1:6379> hkeys num #获取指定hash中所有键1) "incre"2) "dey"3) "anoth"127.0.0.1:6379> hvals num #获取指定hash中所有值1) "1"2) "2"3) "3"127.0.0.1:6379> hlen num #获取指定hash数据中包含多少字段(integer) 3
3、list命令
list是一个有序的字符串列表,列表内部实现使用双向列表(linked list)实现。
list还可以作为队列使用。
127.0.0.1:6379> lpush ab a (integer) 1127.0.0.1:6379> lpush ab b #list的左侧写入数据(integer) 2127.0.0.1:6379> rpush ab c #list的右侧写入数据 (integer) 3127.0.0.1:6379> lrange ab 0 -1 #读取全部数据(下标为-1代表最大下标)1) "b"2) "a"3) "c"127.0.0.1:6379> lindex ab 0 #查看指定下标数据"b"127.0.0.1:6379> llen ab #获取list的长度(integer) 3127.0.0.1:6379> lset ab 1 d #修改指定下标的值OK127.0.0.1:6379> ltrim ab 0 1 #截取,保留指定数据OK127.0.0.1:6379> rpoplpush ab de #将元素从一个列表转到另一个列表"d"127.0.0.1:6379> lrange de 0 -11) "d"2) "DDD"3) "BBB"4) "AAA"127.0.0.1:6379> lrange ab 0 -11) "b"
4、set命令
set集合中的元素都是不重复的,无序的
127.0.0.1:6379> sadd myset a #使用sadd添加set类型数据(integer) 1127.0.0.1:6379> smembers myset #读取指定set内的数据。1) "b"2) "a"3) "z"4) "d"127.0.0.1:6379> srem myset b #member移除集合中的member元素。(integer) 1127.0.0.1:6379> sismember myset b #指定的元素在集合中是否存在,存在返回1,否则返回0(integer) 0127.0.0.1:6379> sdiff myset yourset #返回所有指定集合的差集1) "a"2) "d"3) "z"127.0.0.1:6379> sinter myset yourset #返回所有指定集合的交集1) "b"127.0.0.1:6379> sunion myset yourset #返回所有集合的并集1) "2"2) "b"3) "a"4) "d"5) "1"6) "z"127.0.0.1:6379> scard myset #返回集合的长度(integer) 4127.0.0.1:6379> spop myset #从集合中随机取出一个元素并且删除"b"
5、sorted set 命令
有序集合,在集合类型的基础上为集合中的每个元素都关联了一个分数,这样可以很方便的获得分数最高的N个元素(topN)。
127.0.0.1:6379> zadd sor 1 aa #使用zadd来写入sorted set 数据(写入时需要为数据添加权值)(integer) 1127.0.0.1:6379> ZSCORE sor aa #获取某个数据的权值。"1"127.0.0.1:6379> zrange sor 0 -1 #获取sort set 内的所有数据1) "aa"2) "bb"3) "cc"127.0.0.1:6379> zrevrange sor 0 2 #将数据倒置并输出下标在[0,2]中的值1) "dd"2) "cc"3) "bb"127.0.0.1:6379> zrangebyscore sor 0 100 #将数据按分数从低到高排序,后面的数字是两个分数,并非下标。1) "aa"2) "bb"3) "cc"4) "dd"127.0.0.1:6379> zrem sor aa #删除指定内容(integer) 1127.0.0.1:6379> zincrby sor 11 bb #指定元素的分值增加"13"127.0.0.1:6379> zcard sor #返回sorted set 的长度(integer) 3127.0.0.1:6379> zcount sor 0 100 #获取指定分数范围内的元素个数(闭区间)(integer) 3
Redis HyperLogLog 是用来做基数统计的算法。
优点:在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定 的、并且是很小的。
缺点:因为 HyperLogLog 只会根据输入元素来计算基数,而不会储存输入元素本身,所以 HyperLogLog 不能像集合那样,返回输入的各个元素。
但是个人还是对这个数据类型比较生疏。
最后还有一点,可能有的朋友会觉得sorted set和list略有相似:
相同点:
(1). 二者都是有序的
(2).二者都可以获得某一范围的元素
不同点:
(1).列表类型是通过双向链表实现的,获取靠近两端的数据速度极快,当列表中元素增多后,访问中间的数据速度会很慢,所以它比较适合很少访问中间元素的应用
(2).有序集合类型是使用散列表和跳跃表(skip list)实现的,所以即使读取位于中间部分的数据速度也很快
(3).列表中不能简单的调整某个元素的位置,但是有序集合可以(通过更改这个元素的分值)
(4).有序集合要比列表更加消耗内存
未完待续。。。。
Redis中文乱码问题
有限中文内容存储到Redis当中,在Redis-cli查看时可能显示的是一些看不懂的十六进制内容,完全看不懂啊,这。
[root@master ~]# redis-cli127.0.0.1:6379> keys *1) "\xe5\x8c\x97\xe4\xba\xac\xe5\xbe\xa1\xe5\xae\xab\xe5\xa0\x82\xe8\xbf\x9b\xe5\x87\xba\xe5\x8f\xa3\xe8\xb4\xb8\xe6\x98\x93\xe6\x9c\x89\xe9\x99\x90\xe5\x85\xac\xe5\x8f\xb8"127.0.0.1:6379> exit
为了方便查看,其实是有解决方案的……^^,在登录Redis-cli时加选项 –raw
[root@master ~]# redis-cli --raw127.0.0.1:6379> keys *北京御宫堂进出口贸易有限公司
- redis的基本操作
- redis基本操作
- Redis基本操作
- Redis基本操作
- redis基本操作
- Redis基本操作
- redis基本操作命令
- redis基本操作
- php redis 基本操作
- Redis基本操作
- redis基本操作
- Redis 基本操作
- redis的基本操作
- redis基本操作
- memcached & redis基本操作
- Redis 基本操作一
- redis基本操作命令
- redis 的基本操作
- iSCSI 2-环境搭建<一>
- Oracle和SQL语句的优化策略(基础篇)
- Servlet第四篇【request对象常用方法、应用】
- 机器学习系列——统计学习方法1:第一章
- 初识JAVA
- Redis基本操作
- 在VMWare下安装Linux系统无法全屏显示的解决办法
- 2014/2015及2016的总结
- 进程管理
- 对Native 与 React 交互的学习
- 深入浅出大数据--课本学习 one
- 钢笔
- python_python学习_nametuple
- Flex 布局教程:语法篇